Альтернатива Fetch_array для PHP подготовленных операторов - PullRequest
1 голос
/ 29 января 2012

UPDATE

        $stmt = $this->db->prepare("
SELECT u.id,    u.fname,    u.lname,    u.mname,  u.type, u.email, u.salt,
       u.pass,  u.salt,     u.approved, u.ban,      u2.status
FROM `users` AS u
    LEFT OUTER JOIN `log` AS u2
        ON u2.user_id = u.id
WHERE u.email = ? LIMIT 1") or die($this->db->error);

        $stmt->bind_param("s", $_POST['email']) or die($stmt->error);
        $stmt->execute();
        $stmt->store_result();
        if ($stmt->num_rows == 0) {
            die($this->ajax->respond(7));
        }
        $result = $stmt->get_result();
        $data = $result->fetch_array(MYSQLI_BOTH);

Попытка получить массив, но при этом появляется следующая ошибка для последней строки

Fatal error: Call to a member function fetch_array() on a non-object

Не могу заставить его работать. Пожалуйста, помогите

Ответы [ 3 ]

0 голосов
/ 29 января 2012

С помощью get_result() вы можете получить набор результатов из выполненного оператора:

    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_array(MYSQLI_BOTH))
    {
0 голосов
/ 29 января 2012
 $data = $stmt->fetchAll();

PDO дает эту прекрасную функцию для этой цели.

Редактировать: я думал, что это интерфейс PDO. Почему вы не используете pdo? Я считаю это более удобным, чем MySQL.

0 голосов
/ 29 января 2012

mysqli_stmt::execute не возвращает результат, только true или false. Вы получаете результат от самого объекта mysqli_stmt. Пожалуйста, внимательно прочитайте примеры в http://php.net/manual/en/mysqli-stmt.execute.php и http://php.net/manual/en/mysqli-stmt.fetch.php.

...