PHPを使用してMySQL Multi-statementクエリを操作する場合、 Multi_Query()を使用して、 next_result()で複数の結果セットを通過することがよくあります。 next_result()を呼び出す前に、 use_result()を正しく使用することは、結果が見逃されたりエラー処理されたりしないことを確認するための重要なステップです。この記事では、正しい使用法を紹介し、完全なコードの例を示します。
マルチステートメントクエリを実行した後、MySQLは複数の結果セットを返します。 PHPは、結果を取得する2つの方法を提供します: store_result()とuse_result() 。その中で、 use_result()はバッファーされていない方法であり、大量のデータボリュームの結果を読み取るのに適しており、すぐにサーバーからデータの読み取りを開始します。
現在の結果セットを処理する前にnext_result()を呼び出すと、現在の結果セットはmysqlによって破棄されます。これにより、これらの結果にアクセスできなくなり、エラーが発生する場合があります。したがって、 use_result()を最初に呼び出して、現在の結果を取得してから読み取る必要があります。
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM users; SELECT * FROM products;";
if ($mysqli->multi_query($sql)) {
do {
// 電話 next_result() 現在の結果セットは、前に取得する必要があります
if ($result = $mysqli->use_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free(); // 結果セットリソースをリリースすることを忘れないでください
} else {
echo "現在、結果セットやエラーはありません:" . $mysqli->error;
}
} while ($mysqli->next_result());
} else {
echo "クエリに失敗しました:" . $mysqli->error;
}
$mysqli->close();
?>
use_result()を1回だけ呼び出します: use_result()は、結果セットごとに1回のみ使用できます。そうしないと、エラーが報告されます。
リリースリソース:結果を処理した後、 $ result-> free()を呼び出してメモリを解放してください。
エラーチェック: use_result()はfalseを返す場合があり、判断する必要があります。
use_result()およびnext_result()の正しい順序をマスターすると、マルチステートメントクエリを処理する際に一般的な論理エラーを回避するだけでなく、プログラムの堅牢性も向上します。プロジェクトで複数のSQLクエリを呼び出し、結果セットが大きい場合は、 use_result()を優先し、上記のプロセスを厳密に遵守することをお勧めします。
より実用的なスキルについては、当社のWebサイトhttps://gitbox.net/php-tipsをご覧ください。