Как мне работать с массивом с PDO? - PullRequest
1 голос
/ 04 июня 2011

Предположим, у меня есть некоторые SQL и переменные, такие как:

$number = 5;

И мой PDO sql:

SELECT * FROM things where ID = :number

За исключением того, что число на самом деле является массивом, таким как:

$number = array(1,2,3);

Что совсем не работает для

SELECT * FROM things where ID in ( :number )

Как я могу добиться этого с помощью PDO?В настоящее время я перебираю массив, приводю тип к int и вставляю строку в SQL перед тем, как связать его с PDO.

Ответы [ 4 ]

2 голосов
/ 04 июня 2011

Наиболее распространенным решением является использование числа (разделение запятой) и помещение полученной строки в где in () без привязки ее в качестве параметра. Просто будьте осторожны, вы должны убедиться, что это безопасно для запроса, в этом случае.

То же самое здесь: Можно ли связать массив с условием IN ()?

0 голосов
/ 04 июня 2011

Вы также можете попробовать

$foo = conection->prepare("SELECT * FROM table WHERE id IN(:number)");

foreach ($number as $val) {
$foo->bindValue(':number', $val);
$foo->execute();
}

Надеюсь, это поможет!

0 голосов
/ 04 июня 2011

Вы не можете связать эту переменную напрямую в оператор.

Сделайте что-то вроде этого:

<?php
    $number = array(1, 2, 3);
    $number = implode(', ', $number);

    // Bind it here...

    $sql = "SELECT * FROM table WHERE id IN(:number);";
0 голосов
/ 04 июня 2011

Если вы хотите хотя бы избавиться от цикла, вы можете сгенерировать вашу строку следующим образом:

$numberArray = array(1,2,3);
$number = implode(",", $numberArray);

// $number is now the string "1,2,3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...