クエリ ステートメントが MySQL サービスに送信されるたびに、クエリの構文を解析して、構造が正しく実行可能であることを確認する必要があります。これはプロセスにおいて必要なステップですが、ある程度のオーバーヘッドが発生します。一度行う必要がありますが、同じクエリを繰り返し実行し、複数の行を一括で挿入する際にカラムの値のみを変更する場合、準備されたステートメントはクエリの構文と実行プロセスをサーバー上にキャッシュし、サーバーとクライアントの間でデータを転送し、列の値を変更して、この追加のオーバーヘッドを排除します。
まず、PDO::prepare
の構文を見てみましょう。
public PDO::prepare ( string $statement , array $driver_options = array() ) : PDOStatement
$statement: は、ターゲット データベース サーバー テンプレート。
$driver_options: 配列には 1 つ以上の key=>value キーと値のペアが含まれており、返された PDOStatement オブジェクトの属性を設定します
戻り値 データベース サーバーがステートメントの準備を完了すると、PDOStatement オブジェクトが返されます。データベース サーバーがステートメントを準備できない場合、PDO::prepare() は false を返すか、PDOException をスローします (エラー ハンドラに応じて)。
#1. データベースに接続します
<?php $servername="localhost"; $username="root"; $password="root123456"; $dbname="my_database"; $pdo=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password); echo "连接成功"."<br>"; $pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);
输出:连接成功
2. 疑問符パラメーターを使用して SQL ステートメントを準備します$sql ="select * from fate where `id`=?";
$statement=$pdo->query("select * from fate where `id`=3 ");
var_dump($statement->fetch());
echo "<br>";
$stmt2 = $pdo->prepare($sql);
$stmt2 ->execute(array(3));
var_dump($stmt2->fetch());
输出:array(6) {["ID"]=>string(1) "3"0]=>string(1) "3"["NAME"]=>string(7) "luncher"[1]=>string(7) "luncher"["AGE"]=>string(2) "56"[2]=>string(2) "56"}
array(6) {["ID"]=>string(1) "3"[0]=>string(1) "3"["NAME"]=>string(7) "luncher"[1]=>string(7) "luncher"["AGE"]=>string(2) "56"[2]=>string(2) "56"}
名前付きパラメーターを使用して SQL ステートメントを準備します$query = "insert into tp_user (id,name,gender)values(:id,:name ,:gender)";
//准备语句
$stmt1 = $pdo->prepare($query);
// 执行查询
$stmt1->execute(array('id'=> 1,':name' => '张三', ':gender' => '男'));
//再次执行
$stmt1->execute(array('id'=> 2,':name' => '李四', ':gender' => '女'));
echo "插入成功!","<br>";
输出;插入成功!
おすすめ:
《2021 PHP 面接質問まとめ (集)》《php ビデオ チュートリアル #>>
以上がPHP の prepare() メソッドの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。