Задать вопрос
@svilkov87

Почему не биндятся параметы PDO?

Здравствуйте!

В $art_string лежат данные: string(10) "963,963,70"

Я пытаюсь выбрать из таблицы article только id, которые соответствуют данным из $art_string:

$stm = $pdo->prepare('SELECT `id` FROM `article` WHERE id=:id');
    $stm->bindParam(':id', $art_string, PDO::PARAM_INT);
    $art_id = $stm->fetchAll();


Возвращается пустой массив:

echo "<pre>";
var_dump($art_id);
echo "</pre>";

array(0) {
}

Хотя в таблице article есть id, которые соответствуют данным из $art_string.

В чем может быть проблема?
Спасибо.
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
А смотрели какой запрос уходит в базу данных?
Ибо у вас изначально запрос неправильно составлен. Вы передаёте параметры через запятую. В одно условие. Естественно он не найдёт идентификатор такого вида: 963,963,70.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
NeLexa
@NeLexa
Используйте IN

$ids     = [963, 963, 70];
$inQuery = implode(',', array_fill(0, count($ids), '?'));

$stmt = $db->prepare('
SELECT `id` FROM `article` WHERE id IN(' . $inQuery . ')
');

foreach ($ids as $k => $id)
    $stmt->bindValue(($k+1), $id, \PDO::PARAM_INT);

$stmt->execute();
$allResult = $stmt->fetchAll();
Ответ написан
Комментировать
BuriK666
@BuriK666
Компьютерный псих
нужно execute сделать
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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