mysqli::query
との違いは何mysqli::real_query
ですか?
また
mysqli_query
との違いは何mysqli_real_query
ですか?
mysqli::query
存在する場合は結果を返します。
mysql::real_query
成功するとtrueを返し、そうでない場合はfalseを返します
あなたはphpドキュメントでこれを見ることができたでしょう:
mysqli_query()のドキュメントを見てください。
機能的には、この関数を使用することは、mysqli_real_query()を呼び出してからmysqli_use_result()またはmysqli_store_result()を呼び出すことと同じです。
私が理解していることから、real_queryは実際にクエリを実行し、use/store_resultはクエリの結果セットを取得するプロセスを開始します。query()は両方を実行します。
少し遅れますが、私にとって最大の進歩は、これらの関数がデフォルト設定で呼び出されたときのRAM使用量です。デフォルト設定でmysqli_real_query()
は、結果全体をRAMにコピーしませんmysqli_query()
(ただし、$resultmode
パラメーターを使用して変更できます)。
実際には、他の回答には見られない別の違いがあります。ステートメントに使用する必要がある場合がありますmysqli_real_query()
CALL
。
ストアドプロシージャを呼び出す場合は、複数の結果が返される可能性があります。mysqli_query()
最初の結果をフェッチしますが、フェッチする必要のある結果がさらに増える可能性があり、エラーが発生します。これらの結果セットをフェッチするには、 mysqli_real_query
(または)を使用する必要があります。mysqli_multi_query()
残念ながら、その説明はPHPドキュメントのストアドプロシージャセクションにあるため、到達するのは困難です。
念のため、次を使用して複数の結果セットを返すことを想定したプロシージャを呼び出すコード例を紹介しますmysqli::real_query
。
$query="CALL storedProcedure()";
if($conn->real_query($query)){
do{
if($result=$conn->store_result()) {
while($row=$result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
}while($conn->more_results() && $conn->next_result());
}