За последние 24 часа нас посетили 34575 программистов и 1717 роботов. Сейчас ищет 1131 программист ...

Биндим результат в переменые (немного теории)

Тема в разделе "PHP для новичков", создана пользователем Зингер, 20 сен 2017.

  1. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Здравствуйте коллеги.
    В результате
    PHP:
    1. $stmt->bind_result($prizn2,$prizn3,$prizn4,$prizn5);
    я привязываю результаты запроса к соответствующим переменным.
    Затем с помощью, например
    PHP:
    1. while($stmt->fetch()){
    2.             /.....
    3.         }
    получаю значения этих самых переменных.
    В связи с этим вопросы:
    1) Как так получается, что привязка идет к переменной, а выборка вроде как из массива? Т.е., что это за переменная такая, которая содержит значения, точно так же как и массив?
    2) Как получить доступ к этой переменной по значению ключа? Напр. $prizn2[3].
    3) Возможно ли данные переменные "пересохранить" в массив и отправить их из функции Return-ом?

    P.S. В принципе ответ на 3) вопрос я додумаю, если получу ответ на первые 2.

    Спасибо.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    по роману специфики драйвера пройдясь через жопу(1), сегодня им выеживался в проекте драйверов.
    надо самому писать цикл заносящий все в массив, не как в PDO юзнул fetchAll и готовь попкорн. Через селезнку прошел(2).
    мона. фантазии онлайн вплоть до велосипедов
    --- Добавлено ---
    кому надо в будущем тоже опишу
    PHP:
    1. call_user_func_array ( [ $stmt, 'bind_result' ], $args = [ &$a, &$b, .... ] );
     
  3. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    PDO все таки прикольнее)) хотя я забыл уже когда использовал или mysql(i) или PDO как то все проекты используют свои методы-надстройки для работы с базой)
     
  4. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Да накатайте для себя прослойку PDO/Mysql с интерфейсом и реализацией.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    Уже, Lerma
     
  6. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    @Abyss, свою реализацию так назвал :)
    PHP:
    1. $a = require ( 'mysqli.php' );
    2. $q = $a -> load( 'SELECT username FROM table' );
    3. var_dump ( $q -> fetch(2), $q -> fetch(2) );
    Lerma будет соединять запрос с типом бд( Migrate ) и драйвера ( pdo or mysqli )
     
  8. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    @MouseZver
    Попробовал
    PHP:
    1. call_user_func_array ([$stmt,'bind_result'],$args = [&$prizn2,&$prizn3,&$prizn4,&$prizn5] );
    Выдает ошибку
    Код (Text):
    1. Parse error: syntax error, unexpected '[', expecting ')'

    Что я делаю не так?
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    учиться читать ошибки с номером строки. Если вы не сможете в дальнейшем разбираться с проблемой по выдаче таких
    PHP:
    1. Parse error: syntax error, unexpected '[', expecting ')' ... line 54754545
    то умрите.
    --- Добавлено ---
    call_user_func_array Функция для меня устарела.
    есть более новый подход
    PHP:
    1. $stmt -> bind_param( ...$args );