Intereting Posts
Может ли php прослушивать изменение или обновление базы данных mysql? … мышление в реальном времени, живой поиск здесь Поведение «header» в if-statement Сохранение файла cookie после запроса ajax для междоменного доступа PHP: получить абсолютный путь от абсолютного URL-адреса WordPress – / wp-admin / перенаправление на /wp-login.php при входе в систему Символы Unicode становятся вопросительными знаками после вставки в базу данных Создание ассоциативного массива на основе значений другого ассоциативного массива Требуется ли для Doctrine 2 использовать внешние ключи? php: пустая строка из ниоткуда счетчик загрузки файлов без базы данных Загрузка композитора через скрипт PHP проверка состояния палиндрома с использованием аргументов функции Установленное соединение было прервано программным обеспечением вашей хост-машины Windows 8.1 Как создать PDF-файл с PHP? Как определить язык текста?

Как удалить фатальную ошибку при извлечении массива-члена

Я получаю фатальную ошибку в моем коде php / mysqli, который гласит, что в строке 46:

Fatal error: Call to undefined method mysqli_stmt::fetch_assoc() in ... 

Я просто хочу знать, как удалить эту фатальную ошибку?

Строка кода, на которую он указывает, находится здесь:

 $row = $stmt->fetch_assoc(); 

ОРИГИНАЛЬНЫЙ КОД:

 $query = "SELECT Username, Email FROM User WHERE User = ?"; // prepare query $stmt=$mysqli->prepare($query); // You only need to call bind_param once $stmt->bind_param("s",$user); // execute query $stmt->execute(); // get result and assign variables (prefix with db) $stmt->bind_result($dbUser, $dbEmail); //get number of rows $stmt->store_result(); $numrows = $stmt->num_rows(); if ($numrows == 1){ $row = $stmt->fetch_assoc(); $dbemail = $row['Email']; } 

ОБНОВЛЕННЫЙ КОД:

 $query = "SELECT Username, Email FROM User WHERE User = ?"; // prepare query $stmt=$mysqli->prepare($query); // You only need to call bind_param once $stmt->bind_param("s",$user); // execute query $stmt->execute(); // get result and assign variables (prefix with db) $stmt->bind_result($dbUser, $dbEmail); //get number of rows $stmt->store_result(); $numrows = $stmt->num_rows(); if ($numrows == 1){ $row = $stmt->fetch_assoc(); $dbemail = $row['Email']; } 

Solutions Collecting From Web of "Как удалить фатальную ошибку при извлечении массива-члена"

Переменная $ stmt имеет тип mysqli_stmt, а не mysqli_result. Класс mysqli_stmt не имеет метода «fetch_assoc ()», определенного для него.

Вы можете получить объект mysqli_result из объекта mysqli_stmt, вызвав его метод get_result (). Для этого вам понадобится драйвер mysqlInd !

 $result = $stmt->get_result(); row = $result->fetch_assoc(); 

Если у вас нет установленного драйвера, вы можете получить следующие результаты:

 $stmt->bind_result($dbUser, $dbEmail); while ($stmt->fetch()) { printf("%s %s\n", $dbUser, $dbEmail); } 

Таким образом, ваш код должен стать:

 $query = "SELECT Username, Email FROM User WHERE User = ?"; // prepare query $stmt=$mysqli->prepare($query); // You only need to call bind_param once $stmt->bind_param("s",$user); // execute query $stmt->execute(); // bind variables to result $stmt->bind_result($dbUser, $dbEmail); //fetch the first result row, this pumps the result values in the bound variables if($stmt->fetch()){ echo 'result is ' . dbEmail; } 

Изменить,

 $stmt->store_result(); 

в

 $result = $stmt->store_result(); 

А также

Изменить,

 $row = $stmt->fetch_assoc(); 

в

 $row = $result->fetch_assoc(); 

Вы пропустили этот шаг

 $stmt = $mysqli->prepare("SELECT id, label FROM test WHERE id = 1"); $stmt->execute(); $res = $stmt->get_result(); // you have missed this step $row = $res->fetch_assoc(); 

Я понял, что этот код был предоставлен как ответ где-то в stackoverflow:

 //get number of rows $stmt->store_result(); $numrows = $stmt->num_rows(); 

Я попытался получить количество строк, но понял, что мне не нужна строка $stmt->store_result(); , и это не принесло мне моего номера. Я использовал это:

 $result = $stmt->get_result(); $num_of_rows = $result->num_rows; ...... $row = $result->fetch_assoc(); $sample = $row['sample'];