Почему может возвращаться пустой массив из MySQL базы? Есть решение

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

Без переменных всё РАБОТАЕТ:

$sale_badges = $catalog_items->query('SELECT model_id, status_id FROM catalog_item WHERE status_id=2)->fetchAll();
Array
(
    [0] => Array
        (
            [model_id] => 11
            [status_id] => 2
        )

    [1] => Array
        (
            [model_id] => 5
            [status_id] => 2
        )

)

Стоит поставить в status_id переменную:

$key = 11;
$sale_badges = $catalog_items->query('SELECT model_id, status_id FROM catalog_item WHERE status_id='.$key)->fetchAll();
Array
(
)

Пробовал даже так:

$key = 11;
$sale_badges = $catalog_menu->select('model_id, status_id')->where('model_id = '.$key)->fetchAll();

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

Может с версией MySQL что-то не так?

3 ответа

  • 1
    Eugen Nichikov Партнер-разработчик 27 июня 2017 10:24 # Решение

    Ну... в примере разные ID статусов. Может в этом проблема.

    А так используй плейсхолдеры, а не объединяй строки!

    $key = 11;
    $sale_badges1 = $catalog_menu->select('model_id, status_id')->where('model_id = ?', $key)->fetchAll();
    $sale_badges2 = $catalog_menu->select('model_id, status_id')->where('model_id = i:key', array('key' => $key))->fetchAll();
    • +1
      Никита Никита 27 июня 2017 17:19 #

      Классная конструкция, в документации вебасиста не видел такую, видимо недоглядел.

      Спасибо!

  • 1
    Никита 27 июня 2017 09:42 #

    не знаю в чём была причина с вариантом query(), но c select() заработало. А не работало из-за ошибки в перемеонной объекта модели:

    $sale_badges = $catalog_items->select('model_id, status_id')->where('model_id='.$key)->fetchAll();
  • 0

    Попробуй переменную в кавычки засунуть.

    • 0
      Никита Никита 27 июня 2017 09:28 #

      так не работает

      $sale_badges = $catalog_items->query('SELECT model_id, status_id FROM catalog_item WHERE status_id=$key')->fetchAll();

      так тоже:

      $sale_badges = $catalog_items->query('SELECT model_id, status_id FROM catalog_item WHERE status_id='."$key")->fetchAll();

      и так не работает:

      $sale_badges = $catalog_items->query("SELECT model_id, status_id FROM catalog_item WHERE status_id='$key'")->fetchAll();

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите