mysqli multi_query и insert_id выводят меня из команд;

Я знаю, что подобные вопросы задавались, я пробовал кучу вопросов (включая php docs), но мне кажется, что это не работает.

У меня есть следующее:

$query = "insert into page title values ('v1');insert into page title values ('v2');insert into page title values ('v3');"

$mysqlidb->multi_query($query);

$index = 0;
$insertId = $this->db->insert_id;
for($i = $insertId; $i < $insertId + sizeof($pages); $i++) {
    //store ids in some array
}

Если я выполняю приведенный выше код, независимо от того, что я пытаюсь сделать дальше в БД, я получаю ошибку "Команды не синхронизированы; вы не можете выполнить эту команду сейчас".

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

Кажется, есть результаты, потому что $mysqli->more_results() возвращает true, но если я затем вызываю use_result() или store_result(), они возвращают null. Я пытался сделать это до и после вызова next_result(), и это всегда null:

while($mysqli->more_results()) {
    //next line returns error, calling close() on null:
  $mysqli->use_result()->close();
  $mysqli->next_result();
}

или же

while($mysqli->more_results()) {
  $mysqli->next_result();
  //next line returns error, calling close() on null:
  $mysqli->use_result()->close();

}

Пожалуйста, помогите, как избавиться от "Команды не синхронизированы; вы не можете запустить эту команду сейчас" после выполнения вставки multi_query и вызова insert_id. Благодарю.

1 ответ

Решение
$values = ('v1' => '','v2' => '','v3' => '');
foreach ($values as $key => $val) {
  $query = "insert into page title values ('$key')";
  $mysqlidb->query($query);
  $values[$key] = $mysqlidb->insert_id;
}
Другие вопросы по тегам