2010-05-03 7 views
1

Я изучаю, как использовать подготовленные операторы с объектами mysqli php 5, и у меня возникли проблемы с привязкой базового результата к работе. Я следую примеру кода из php.net, но что-то не работает, связанные результаты всегда равны NULL. Вот что у меня естьmysqli bind_result/fetch problem

/* подготовить заявление */

if ($stmt = $DB->mysqli->prepare("SELECT `alias`,`nameFirst`,`nameLast`,`email`,`access_level` FROM `users` WHERE `alias` LIKE CONCAT('%',?,'%') LIMIT 20;")) { 

        $stmt->bind_param('s',$alias); 

        $stmt->execute(); 

        /* bind variables to prepared statement */ 
        $stmt->bind_result($col1, $col2); 

        /* fetch values */ 
        while ($stmt->fetch()) { 
        echo "COL 1=".$col1." | COL2=".$col2."<br />"; 
        } 

        /* close statement */ 
        $stmt->close(); 
       } else echo "NO DICE"; 
+0

У меня была такая же проблема, как и у ОП, но причиной для меня было то, что у меня была ** запятая **, отсутствующая в моей инструкции SELECT a, b, c, d, e f, g'. –

ответ

3

Оп, я пропустил записку прямо на PHP документах:

Заметьте, что все столбцы должны быть связаны после mysqli_stmt_execute() и до звонка mysqli_stmt_fetch().

Найдено ответ здесь:

Prepared Statement not returning anything

-3

Или, вы можете все поля в массиве, как $cols[]. Во время печати вы можете использовать echo $cols[0].$cols[1] и так далее.

+0

Это не работает. – Raffael