我有以下代码:
$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 和一个可选的绑定(bind)变量而不触发异常(就像我尝试将两个绑定(bind)放在最后并留下一个 NULL 时发生的那样)。
有没有另一种方法来编写这段代码?
最佳答案
如果你真的想要这样更干净的代码,
$qb = DB::table('image')->where('id', '>=', $from);
if(isset($to)) {
$qb->andWhere('id', '<=', $to)
}
$data = $qb->get()
你必须看看查询构建器
而对于原始 PDO,你的代码是你能得到的最好的。
关于php - 绑定(bind) PDO 查询中的可选部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36914469/