Проблема с mysqli fetch - PullRequest
       9

Проблема с mysqli fetch

1 голос
/ 03 апреля 2011

У меня проблема с извлечением данных в mysqli. Я попытаюсь объяснить мою проблему на примере:

Я хочу получить записи (от разных лиц) из таблицы. Теперь я хочу найти имя каждого человека в другой таблице и посмотреть, есть ли у него какая-либо фотография. Мой код приведен ниже, однако он не работает, я получаю следующие ошибки:

mysqli::prepare() [mysqli.prepare]: All data must be fetched before a new statement prepare takes place
    Call to a member function fetch() on a non-object in ...

Мой код:

if ($stmt = $this->mysqli->prepare("SELECT entry, author, time FROM messages WHERE user = ?")) {
            $stmt->bind_param("s", $user_name);
            $stmt->execute();
            $stmt->bind_result($entry, $author, $time);

        while ($stmt->fetch()) {             
                 if ($stmt = $this->mysqli->prepare("SELECT photo_id FROM photos WHERE user = ?")) {
                     $stmt->bind_param("s", $author);
                     $stmt->execute();   
                     $stmt->bind_result($photo_id); 
                }
           //echo $photo_id; 
        }    
    $stmt->close();
    }

Я буду очень благодарен за любую помощь.

1 Ответ

3 голосов
/ 03 апреля 2011

Назначьте второй оператор новой переменной, чтобы он не переопределял первую переменную и не вызывал ошибку «все данные должны быть извлечены ..».

if ($stmt = $this->mysqli->prepare("SELECT entry, author, time FROM messages WHERE user = ?")) {
        $stmt->bind_param("s", $user_name);
        $stmt->execute();
        $stmt->bind_result($entry, $author, $time);

        while ($stmt->fetch()) {             
            if ($st = $this->mysqli->prepare("SELECT photo_id FROM photos WHERE user = ?")) {
                $st->bind_param("s", $author);
                $st->execute();   
                $st->bind_result($photo_id); 
            }
            //echo $photo_id;
            $st->close();
        }    
    $stmt->close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...