绑定 PDO 查询中的可选部分


Optional section in bound PDO query

我有以下代码:

$sql = "SELECT * FROM image WHERE id >= :from";
$bind = array(":from" => $from);
if(isset($to)) {
    $sql .= " AND id <= :to";
    $bind[":to"] = $to;
}
$request = $database->prepare($sql);
$request->execute($bind);
print_r($request->fetchAll());

这感觉很不干净,但它有效。我想知道的是,是否有一种更简洁的方法可以在不触发异常的情况下拥有一个可选的 SQL 和一个可选的绑定变量(就像我尝试将两个绑定放在末尾并留下一个 NULL 时发生的那样)。

有没有另一种方法来编写此代码?

如果你真的想要像这样的更干净的代码,

$qb = DB::table('image')->where('id', '>=', $from);
if(isset($to)) {
    $qb->andWhere('id', '<=', $to)
}
$data = $qb->get()

你必须看向查询生成器

而对于原始PDO,您的代码是您可以获得的最好的代码。