33

mysqli::queryとの違いは何mysqli::real_queryですか?

また

mysqli_queryとの違いは何mysqli_real_queryですか?

4

4 に答える 4

20

mysqli::query存在する場合は結果を返します。

mysql::real_query成功するとtrueを返し、そうでない場合はfalseを返します

あなたはphpドキュメントでこれを見ることができたでしょう:

于 2012-11-20T09:06:08.333 に答える
19

mysqli_query()のドキュメントを見てください。

機能的には、この関数を使用することは、mysqli_real_query()を呼び出してからmysqli_use_result()またはmysqli_store_result()を呼び出すことと同じです。

私が理解していることから、real_queryは実際にクエリを実行し、use/store_resultはクエリの結果セットを取得するプロセスを開始します。query()は両方を実行します。

于 2012-11-20T09:04:35.280 に答える
4

少し遅れますが、私にとって最大の進歩は、これらの関数がデフォルト設定で呼び出されたときのRAM使用量です。デフォルト設定でmysqli_real_query()は、結果全体をRAMにコピーしませんmysqli_query()(ただし、$resultmodeパラメーターを使用して変更できます)。

于 2019-09-19T10:35:31.813 に答える
2

実際には、他の回答には見られない別の違いがあります。ステートメントに使用する必要がある場合があります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());          
}
于 2019-10-01T05:51:08.720 に答える