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());
}