@misc1

PDO/MySQLi и array в запросе?

Доброе время суток). Есть вот такой array в переменной $jsondecoded:

array (size=3)
  0 => string 'B' (length=1)
  1 => string 'C' (length=1)
  2 => string 'D' (length=1)


Каким образом в PDO или MySQLi можно составить такой SQL?:
SELECT * FROM news WHERE id = /* значения $jsondecoded... eg. (B || C || D) */


P.S Ещё есть json: ["B","C","D"]
P.P.S Размер array и json могут изменятся в большую или меньшую сторону, смотря что выберет пользователь (то есть может быть и ["B"], и ["B","C","D", "S"])
  • Вопрос задан
  • 2387 просмотров
Решения вопроса 1
deadbyelpy
@deadbyelpy
веб-шмеб
$ids = array('B','C','D'); // ваш  $jsondecoded массив
$marks = implode(',', array_fill(0, count($ids), '?'));
$stmt = $pdo->prepare("SELECT * FROM news WHERE id IN ($marks)");
foreach ($ids as $k => $id) {
    $stmt->bindValue(($k+1), $id);
}
$stmt->execute();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
  • PDO -phpfaq.ru/pdo#in
  • Mysqli - пол-экрана текста, так что без враппера совсем грустно.

Зато с враппером - всего дна строчка
$data = $db->getAll("SELECT * FROM news WHERE id IN (?a)", $json);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы