За последние 24 часа нас посетили 26677 программистов и 1549 роботов. Сейчас ищут 790 программистов ...

Чьоо? var_dump & if

Тема в разделе "PHP для новичков", создана пользователем iNEEdhLw, 11 май 2015.

  1. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    [​IMG]
    dasdsadNULL
    как?
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    у тебя в результате выборки одна строка. первым вызовом (который ифом прикрыт) ты получаешь следующую строку результата. поскольку офсет нулевой - вернется первая строка. поскольку строка вернулась - условие истинное значение приняло и свалилось в тело. в теле ты еще одну следующую строку получаешь. но она же у тебя только одна и уже вернулась разок. поэтому возвращается нул как признак достижения конца при итериции результата запроса. и ты в замешательстве...

    Код (Text):
    1. if(null !== ($row = fetch()) {
    2. var_dump($row);die();
    3. }
    Добавлено спустя 1 минуту 59 секунд:
    кстати query это именно запрос который в базу отправляется. для результата выполнения запроса как не сложно догадаться лучше использовать result
     
  3. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    спасибо за подробное разжевывание.
    з.ы. query как-то "прилипло", вот и юзаю где попало.
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    проблема в том что другому программисту понадобится модификация твоего кода и для него будет неожиданным несколько не общепринятое применение имени переменных. так что лучше переучиться по возможности.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    У переменной $connect тип "ресурс", как правило если что-то было прочитано из переменной такого типа, то этого в ней больше нет.
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    С каких пор экземпляр класса mysqli стал ресурсом?
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    При открытии коннекта mysqli возвращает ссылку на него. Это именно ссылка на ресурс. При юзании ООП-стиля в работе с ним, это прозрачно и ты вообще не в курсе. У тебя в руках действительно просто экземпляр класса mysqli, а то там внутри него наинкапсулировано, в общем-то плевать. Но при юзании процедурного стиля, ссылочку на коннект нужно отдельно хранить и самостоятельно во все вызовы подсовывать. Тут, собсна, это и происходит. Обрати на прокидывание $connect в запросе.

    Добавлено спустя 4 минуты 49 секунд:
    Ты про if($connect) не, тут как раз все ровно. Там либо ресурс, который отработает как true и останется как есть, либо, если не приконнектило, там чистый false.
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Fell-x27, а если я в этот код добавлю echo get_class($connect); ? Какая разница, как я использую объект - передаю как параметр, или вызываю методы, он всё равно объектом остаётся. В документации сказано, что mysqli_connect - псевдоним конструктора mysqli. И вполне возможно, хотя и не стоит, использовать вперемешку методы и misqli_* функции
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ты не понял, "$connect" тебе выдается только при процедурной инициализации mysqli_соединения. И у него нет методов. Вообще. Работа со ссылкой на коннект ведется только в процедурном стиле. В объектном такого нет. Она живет в недрах экземпляра и ты вообще не подозреваешь, что она существует. Он псевдоним, но как бы не совсем таковой. Результаты работы отличаются несколько.

    В доке тоже это отдельно указано.
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Fell-x27, вот я у себя выполнил код
    Код (Text):
    1.  
    2. <?php
    3.  
    4. $mi = mysqli_connect("localhost", "name", "password", "cdcol");
    5.  
    6. echo get_class($mi);
    Получил вывод
    Код (Text):
    1.  
    2. mysqli
     
  11. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Потому, что это псевдоним mysqli::__construct()
    mysqli mysqli_connect (...
    Эта функция вернет набор свойств установленного соединения в качестве объекта mysqli.
    Это не является ресурсом, как было в mysql_connect.

    По этому если ты сделаешь так:
    Код (PHP):
    1. $mi = mysql_connect("localhost", "name", "password", "cdcol");
    2. echo get_class($mi); 
    Получишь в ответ:
    Warning: get_class() expects parameter 1 to be object, resource given in ...
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Действительно, объект. Прошу прощения за дезинформацию..