首頁 > 後端開發 > php教程 > 對PHP中的prepare()方法的解析

對PHP中的prepare()方法的解析

autoload
發布: 2023-04-09 22:28:01
原創
6179 人瀏覽過

對PHP中的prepare()方法的解析

每次傳送查詢語句給MySQL服務時,都必須解析該查詢的語法,確保結構正確並且能夠執行。這是這個過程中必要的步驟,但也確實帶來了一些開銷。做一次是必要的,但是如果反覆地執行相同的查詢,批量插入多行時只改變列值,準備語句會在伺服器上快取查詢的語法和執行過程,而只在伺服器和客戶端之間傳輸有變化的列值,以此來消除這些額外的開銷。

首先我們來看看PDO::prepare的語法:

public PDO::prepare ( string $statement   , array $driver_options = array()   ) : PDOStatement
登入後複製
  • $statement:必須是對目標資料庫伺服器有效的SQL 語句模板。

  • $driver_options:陣列包含一個或多個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"}
登入後複製

#3.使用命名參數來準備SQL語句

#
$query = "insert into tp_user (id,name,gender)values(:id,:name ,:gender)";
//准备语句
$stmt1 = $pdo->prepare($query);
// 执行查询
$stmt1->execute(array(&#39;id&#39;=> 1,&#39;:name&#39; => &#39;张三&#39;, &#39;:gender&#39; => &#39;男&#39;));
//再次执行
$stmt1->execute(array(&#39;id&#39;=> 2,&#39;:name&#39; => &#39;李四&#39;, &#39;:gender&#39; => &#39;女&#39;));
echo "插入成功!","<br>";
登入後複製
输出;插入成功!
登入後複製

推薦:2021年PHP面試題大總結(收藏)》《

######################################### #php影片教學######》#######

以上是對PHP中的prepare()方法的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板