mysqli預處置編譯的深刻懂得。本站提示廣大學習愛好者:(mysqli預處置編譯的深刻懂得)文章只能為提供參考,不一定能成為您想要的結果。以下是mysqli預處置編譯的深刻懂得正文
記得之前php點點通也寫過mysqli的預處置的php教程,那時刻只是看書亂寫的,沒懂道理,數月事後,忽然明確了許多:
想一想看。假設我們要拔出許多1000個用戶,你怎樣做,for輪回?照樣mysqli處置多條sql? no!這些處置很慢的,php外面有許多操作mysql數據庫的函數,不過是把sql語句傳遞給mysql數據庫,真正處置sql語句的是mysql,mysql數據庫是要編譯sql語句停止履行的,下面這兩種操作會對雷同的sql語句停止屢次編譯,有這需要嗎?法式員老是很聰慧的,因而有了mysqli預處置技巧!mysqli還能避免sql注入進擊!
看看上面這個預編譯代碼:
<?php
//創立銜接
$mysqli=new mysqli("localhost","root","","test");
//設置mysqli編碼
mysqli_query($mysqli,"SET NAMES utf8");
//檢討銜接能否被創立
if (mysqli_connect_errno()) {
printf("Connect failed:".mysqli_connect_error());
exit();
}
//創立預備語句
$stmt = $mysqli->prepare("select id,username from `user` where `id` > ?");
/*************************************************************/
$id=5;
//綁定參數
$stmt->bind_param("i",$id);
//綁定成果集
$stmt->bind_result($id,$username);
//履行查詢
$stmt->execute();
//顯示綁定成果的變量
while($stmt->fetch()){
echo "第".$id."個用戶: ".$username."<br />";
}
/**************************************************************/
/*www.phpddt.com為你提醒:下面*之間的內容可以反復履行相似功效,不須要再次編譯了*/
//釋放成果
$stmt->free_result();
//封閉編譯語句
$stmt->close();
//封閉數據庫的鏈接
$mysqli->close();
?>