mysqli對prepare的支持對於大訪問量的網站是很有好處的,它極大地降低了系統開銷,而且保證了創建查詢的穩定性和安全性。prepare准備語句分為綁定參數和綁定結果,下面將會一一介紹!
(1)綁定參數
看下面php代碼:
復制代碼 代碼如下:
<?php
//創建連接
$mysqli=new mysqli("localhost","root","","volunteer");
//檢查連接是否被創建
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/*
* 創建一個准備查詢語句:
* ?是個通配符,可以用在任何有文字的數據
* 相當於一個模板,也就是預備sql語句
*/
if ($stmt = $mysqli->prepare("insert into `vol_msg`(mid,content) values(?,?)")){
/*第一個參數是綁定類型,"s"是指一個字符串,也可以是"i",指的是int。也可以是"db",
* d代表雙精度以及浮點類型,而b代表blob類型,第二個參數是變量
*/
$stmt->bind_param("is",$id,$content);
//給變量賦值
$id = "";
$content = "這是插入的內容";
//執行准備語句
$stmt->execute();
//顯示插入的語句
echo "Row inserted".$stmt->affected_rows;
//下面還可以繼續添加多條語句,不需要prepare預編譯了
//關閉數據庫的鏈接
$mysqli->close();
}
?>
以上php實例運行結果:
Row inserted:1
(2).綁定結果:綁定結果就是將你綁定的字段給php變量,以便必要時使用這些變量
請看下面的php代碼:
復制代碼 代碼如下:
<?php
//創建連接
$mysqli=new mysqli("localhost","root","","volunteer");
//設置mysqli編碼
mysqli_query($mysqli,"SET NAMES utf8");
//檢查連接是否被創建
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
//創建准備語句
if ($stmt = $mysqli->prepare("select mid,content from `vol_msg`")){
//執行查詢
$stmt->execute();
//為准備語句綁定實際變量
$stmt->bind_result($id,$content);
//顯示綁定結果的變量
while($stmt->fetch()){
echo "第".$id."條: ".$content."<br />";
}
//關閉數據庫的鏈接
$mysqli->close();
}
?>