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