Привет там,MySQLi подготовленное заявление не работает в While Loop
Я работаю на запрос внутри цикла While. Однако второй запуск не работает. (The While заканчивается позже, после того, как некоторые результаты получают эхо). Я попытался вызвать второй запрос $stma
, однако это привело к той же ошибке.
Ошибка
Fatal error: Call to a member function bind_param() on a non-object in PATH on line 96
Код
// Prepare Query
$stmt = $db->prepare("SELECT id, fullname, shortname FROM languages WHERE (state = '0')");
$stmt->execute();
// Get result from query.
$stmt->bind_result($lang_id, $lang_name, $lang_short);
// While Loop
while($language = $stmt->fetch()){
// Get Language Texts
$stmt = $db->prepare("SELECT id, article_id, article_language, article_text, article_recuse, article_spec FROM article_content WHERE article_id = ? AND article_language = ?");
$stmt->bind_param("is", $artikel_nummer, $lang_short); // This is line 96.
$stmt->execute();
// Get result from query.
$stmt->bind_result($t_id, $t_articleid, $t_language, $t_text, $t_recuse, $t_spec);
$stmt->fetch();
Я довольно новыми для подготовленных заявлений, так что я не уверен, что именно эта проблема. Я запустил var_dump()
по запросу, и он вернул false, однако работает запрос в другом месте или за пределами цикла WHILE (когда я определяю две переменные вручную).
Я эхом отозвался $artikel_nummer
и $lang_short
, и он возвращает их значения.
Вопрос следующий: Почему второй запрос не работает и, таким образом, возвращает ошибку, как указано выше?
вы ничего с '$ language' для цикла не делает, ни для' $ lang_id' или '$ lang_name'. –
Вы переписываете переменную '$ stmt', но все еще пытаетесь извлечь ее из каждой итерации. – Phil
Вы выполняете инструкцию перед привязкой к ней значений. – Mike