如何使用PDO处理数组?

时间:2011-06-03 20:13:13

标签: php sql pdo

让我假装我有一些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。

4 个答案:

答案 0 :(得分:2)

最常见的解决方案是内插数字(用逗号分隔)并将结果字符串放入in()中,而不将其绑定为param。请注意,在这种情况下,您必须确保查询安全。

同样的事情: Can I bind an array to an IN() condition?

答案 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);";