php - 绑定(bind) PDO 查询中的可选部分

标签 php sql sqlite pdo

我有以下代码:

$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/

相关文章:

sql - 如何在SQL查询中找到第二高的平均成绩

file - Zend_Cache_Backend_Sqlite 与 Zend_Cache_Backend_File

PHP 计算数据库中特定条目的行数

php - (int) 和 intval() 有什么区别?

php - 抽象类 php 中的单例

php - 为什么请求结果不一样?

sql - SQL-选择随机行并合并到新表中

mysql - 将 ORDER BY 应用于 UNION MYSQL

c# - SQLite 与 Web 服务 c#

java - 我无法从 sqlite 解析日期。解析异常 : Unparseable date