让我假装我有一些SQL和变量,如:
$number = 5;
我的PDO sql是:
SELECT * FROM things where ID = :number
除此之外,number实际上是一个数组,如:
$number = array(1,2,3);
根本不起作用
SELECT * FROM things where ID in ( :number )
如何使用PDO完成此操作? 现在我循环遍历数组,类型转换为int,并在我对它进行任何PDO绑定之前将字符串注入SQL。
答案 0 :(得分:2)
最常见的解决方案是内插数字(用逗号分隔)并将结果字符串放入in()中,而不将其绑定为param。请注意,在这种情况下,您必须确保查询安全。
答案 1 :(得分:0)
如果你想至少摆脱循环,你可以生成你的字符串:
$numberArray = array(1,2,3);
$number = implode(",", $numberArray);
// $number is now the string "1,2,3"
答案 2 :(得分:0)
您也可以尝试
$foo = conection->prepare("SELECT * FROM table WHERE id IN(:number)");
foreach ($number as $val) {
$foo->bindValue(':number', $val);
$foo->execute();
}
希望它有所帮助!
答案 3 :(得分:-1)
您无法将该变量直接绑定到语句中。
做这样的事情:
<?php
$number = array(1, 2, 3);
$number = implode(', ', $number);
// Bind it here...
$sql = "SELECT * FROM table WHERE id IN(:number);";