ホームページ  >  記事  >  バックエンド開発  >  php プリコンパイル済み

php プリコンパイル済み

WBOY
WBOYオリジナル
2016-06-23 13:57:421950ブラウズ

データベースに大量のデータを挿入するなど、SQL ステートメントに同等の操作がある場合、単一実行とバッチ実行の両方が継続的になるため、SQL ステートメントを個別またはバッチで実行する元の方法は明らかに実行できません。 SQL ステートメントをデータベースに送信すると、データベースが SQL ステートメントをコンパイルして処理するため、効率が低くなります。

php にあるプリコンパイルは、この問題を解決します。その動作原理は、SQL ステートメントを送信すると、データベースが SQL ステートメントをプリコンパイルするというものです。その後は、データをデータベースに送信するだけです。

以下は、この状況を説明するための公式の例です:

<?php$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);$code = 'DEU';$language = 'Bavarian';$official = "F";$percent = 11.2;/* execute prepared statement */$stmt->execute();printf("%d Row inserted.\n", $stmt->affected_rows);/* close statement and connection */$stmt->close();/* Clean up table CountryLanguage */$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");printf("%d Row deleted.\n", $mysqli->affected_rows);/* close connection */$mysqli->close();?> 


その中で、$mysqli->prepare は SQL ステートメントのプリコンパイル処理を実行し、

$stmt->bind_param はパラメータを実行します。バインディング。

$stmt->execute(); は挿入操作用です。

複数のデータを挿入する必要がある場合は、$stmt->bind_param と $stmt->execute(); を操作するだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。