【发布时间】:2012-05-13 07:47:45
【问题描述】:
$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%')
LIMIT :limit1, :limit2";
我还想像这样使用数组输入:
$stmt->execute($array);
否则我无法重复使用相同的方法来执行我的查询。
同时 :limit1 和 :limit2 不起作用,除非像这样放入:
$stmt->bindParam(':limit1', $limit1, PDO::PARAM_INT);
我都尝试了,但它没有使用 bindParams 执行:
$stmt->bindParam(':limit2', $limit2, PDO::PARAM_INT);
$stmt->execute($array);
解决方法是什么?
我以为我可以扩展 PDOStatement 并添加一个新方法“bindLimit”之类的,但我不知道 PDO 使用什么内部方法将参数绑定到变量。
【问题讨论】:
-
+1 表示扩展 PDOStatement 的想法(但我不确定这是否是解决方案)。
-
你不能检查限制参数并显式绑定它们(如果存在),否则只使用执行?
-
“否则我无法重复使用相同的方法来执行我的查询。”你能详细解释一下这个方法吗?
-
@webbiedave 它只是一种方便的方法来准备、绑定和执行限制变量的可选参数。我可以将字符串 'LIMIT n,n' 附加到 $sql 的末尾,但是我必须使用正则表达式来清理输入字符串。