0

同様の質問が寄せられていることは知っています。私はそれらの束(phpドキュメントを含む)を試しましたが、これがうまくいかないようです。

私は次のものを持っています:

$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
}

上記のコードを実行すると、データベースで次に何をしようとしても、「コマンドが同期されていません。今はこのコマンドを実行できません」というエラーが表示されます。

すべての結果を閉じる必要があることは理解していますが、問題は方法がわからないことです。

true を返すため、結果があるよう$mysqli->more_results()ですが、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を呼び出した後、「コマンドが同期していません。現在、このコマンドを実行できません」を取り除く方法を教えてください。ありがとう。

4

1 に答える 1

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;
}
于 2012-04-25T14:25:43.113 に答える