За последние 24 часа нас посетили 17625 программистов и 1314 роботов. Сейчас ищут 1817 программистов ...

Ошибка fetch_assoc() on a non-object и переменная

Тема в разделе "MySQL", создана пользователем Elemental, 30 июл 2016.

  1. Elemental

    Elemental Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    8
    Симпатии:
    0
    Добрый день. При запросе WHERE IN без использования массива ошибок не возникает. Стоит только использовать переменную вылетает call to a member function fetch_assoc() on a non-object.

    В $id_string я собираю строку из массива

    Собственно вот код:
    Код (Text):
    1. $input = array(1,2,3,4,5);
    2. $id_string = implode(',',$input);
    3. $myquery = $connect->query("SELECT * FROM table WHERE id IN ({$id_string})");
    4. do {
    5.     // Выполняем
    6. }
    7. while ($myquery_assoc = $connect->fetch_assoc($myquery));
    Суть еще в том, что я могу вывести полученные данные. Но в конце всеравно получаю ошибку.
    Если же вместо {$id_string} руками ввести 1,2,3,4,5, то никаких ошибок не возникает. В чем может быть проблема? Заранее спасибо
     
    #1 Elemental, 30 июл 2016
    Последнее редактирование: 30 июл 2016
  2. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Нельзя использовать do while при работе с базой данных, он не для этих целей нужен, больше пригоден для символических коллекций и итераций до начала цикла while.
    Почему вы не смотрите оф ресурс php.net, ведь для вас даже и перевод сделали на русский, старались, хоть и есть нюансы. Но - это оф ресурс и нужно доверять только ему.
    PHP:
    1. // ......
    2. while ($myquery_assoc = $connect->fetch_assoc($myquery)) {
    3.     // Выполняем
    4. }
     
    denis01 нравится это.
  3. Elemental

    Elemental Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    8
    Симпатии:
    0
    Спасибо, но всё же это от ошибки не избавляет
     
    #3 Elemental, 30 июл 2016
    Последнее редактирование: 30 июл 2016
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Если читать - избавляет.
     
  5. Elemental

    Elemental Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    8
    Симпатии:
    0
    В упор не пойму куда дальше копать, выводит все что мне нужно. Но в конце Fatal error: Call to a member function fetch_assoc() on a non-object
    --- Добавлено ---
    Разобрался. Решение было совсем в другом направлении
     
    #5 Elemental, 30 июл 2016
    Последнее редактирование: 30 июл 2016
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Elemental в каком? Перед тем как пихать в метод что-то нужно было проверить что ты туда засовываешь и подходит ли оно для этого метода?
     
    Elemental нравится это.
  7. Elemental

    Elemental Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    8
    Симпатии:
    0
    Именно "предохраниться" перед впихиванием в метод и нужно было. При запросе WHERE IN (), когда массив пустой, fetch_assoc выдает ошибку

    На данном этапе isset достаточно, так как базу наполняю только я. В будущем можно будет и регуляркой значения вытащить, предварительно избавившись от мусора в строке
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @Elemental в жалобе будет отказано. Если тебе не нравится его формулировка - предложу свою. Попробуй головой думать, а не тупо жрать в неё. Так лучше? Тебе все советуют быть внимательнее и изучить небольшой объем материала. Если не осилишь - бросай нахрен программирование. Одна извилина и та прямая и не тянет кодинг. Путь такой будет диагноз. А если осилишь - поймешь как это на самом деле просто. Так что не надо тут на всяких высокомерных снобов жалобы катать. Сначала включи голову и подумай о реальном смысле сообщения, вместо придумывания оскорбления в твой адрес, траты сил на оскорбление этим оскорблением. Ну и так далее.
     
  9. Elemental

    Elemental Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    8
    Симпатии:
    0
    Единственным адекватным человеком оказался denis01. Спасибо ему за наводку на будущее. Впредь буду проверять все, что передаю методу
     
  10. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @Ganzal, это на меня чтоль жалоба?)
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    революционно!
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Защитное программирование