mysqli預(yù)處理編譯的深入理解
記得以前php點(diǎn)點(diǎn)通也寫(xiě)過(guò)mysqli的預(yù)處理的php教程,那時(shí)候只是看書(shū)亂寫(xiě)的,沒(méi)懂原理,數(shù)月過(guò)后,突然明白了很多:
想想看。假如我們要插入很多1000個(gè)用戶,你怎么做,for循環(huán)?還是mysqli處理多條sql? no!這些處理很慢的,php里面有很多操作mysql數(shù)據(jù)庫(kù)的函數(shù),無(wú)非是把sql語(yǔ)句傳遞給mysql數(shù)據(jù)庫(kù),真正處理sql語(yǔ)句的是mysql,mysql數(shù)據(jù)庫(kù)是要編譯sql語(yǔ)句進(jìn)行執(zhí)行的,上面這兩種操作會(huì)對(duì)相同的sql語(yǔ)句進(jìn)行多次編譯,有這必要嗎?程序員總是很聰明的,于是有了mysqli預(yù)處理技術(shù)!mysqli還能防止sql注入攻擊!
看看下面這個(gè)預(yù)編譯代碼:
<?php
//創(chuàng)建連接
$mysqli=new mysqli("localhost","root","","test");
//設(shè)置mysqli編碼
mysqli_query($mysqli,"SET NAMES utf8");
//檢查連接是否被創(chuàng)建
if (mysqli_connect_errno()) {
printf("Connect failed:".mysqli_connect_error());
exit();
}
//創(chuàng)建準(zhǔn)備語(yǔ)句
$stmt = $mysqli->prepare("select id,username from `user` where `id` > ?");
/*************************************************************/
$id=5;
//綁定參數(shù)
$stmt->bind_param("i",$id);
//綁定結(jié)果集
$stmt->bind_result($id,$username);
//執(zhí)行查詢
$stmt->execute();
//顯示綁定結(jié)果的變量
while($stmt->fetch()){
echo "第".$id."個(gè)用戶: ".$username."<br />";
}
/**************************************************************/
/*www.phpddt.com為你提示:上面*之間的內(nèi)容可以重復(fù)執(zhí)行類(lèi)似功能,不需要再次編譯了*/
//釋放結(jié)果
$stmt->free_result();
//關(guān)閉編譯語(yǔ)句
$stmt->close();
//關(guān)閉數(shù)據(jù)庫(kù)的鏈接
$mysqli->close();
?>
- MySQL?SQL預(yù)處理(Prepared)的語(yǔ)法實(shí)例與注意事項(xiàng)
- Mysql prepare預(yù)處理的具體使用
- MySQL中預(yù)處理語(yǔ)句prepare、execute與deallocate的使用教程
- 理解Mysql prepare預(yù)處理語(yǔ)句
- php+mysqli預(yù)處理技術(shù)實(shí)現(xiàn)添加、修改及刪除多條數(shù)據(jù)的方法
- php+mysqli使用預(yù)處理技術(shù)進(jìn)行數(shù)據(jù)庫(kù)查詢的方法
- PHP mysqli擴(kuò)展庫(kù) 預(yù)處理技術(shù)的使用分析
- MySQL中Stmt 預(yù)處理提高效率問(wèn)題的小研究
- Go?連接?MySQL之?MySQL?預(yù)處理詳解
相關(guān)文章
mysql下為數(shù)據(jù)庫(kù)設(shè)置交叉權(quán)限的方法
由于 SupeSite 需要調(diào)用 Discuz! 和 UCHome 的數(shù)據(jù),所以如果它們不安裝在同一個(gè)數(shù)據(jù)庫(kù),SupeSite 的數(shù)據(jù)庫(kù)用戶必須要對(duì) Discuz! 和 UCHome 的數(shù)據(jù)庫(kù)有讀取、修改、刪除等權(quán)限。2011-07-07
php+mysql prepare 與普通查詢的性能對(duì)比實(shí)例講解
prepare可以解決大訪問(wèn)量的網(wǎng)站給數(shù)據(jù)庫(kù)服務(wù)器所帶來(lái)的負(fù)載和開(kāi)銷(xiāo),本文章通過(guò)實(shí)例向大家介紹預(yù)查詢prepare與普通查詢的性能對(duì)比,需要的朋友可以參考一下2016-11-11
You must SET PASSWORD before executing this statement的解決方法
今天在MySql5.6操作時(shí)報(bào)錯(cuò):You must SET PASSWORD before executing this statement解決方法,需要的朋友可以參考下2013-06-06
使用Grafana+Prometheus監(jiān)控mysql服務(wù)性能
這篇文章主要介紹了使用Grafana+Prometheus監(jiān)控mysql服務(wù)性能的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下方法2020-03-03
MySQL與PHP的基礎(chǔ)與應(yīng)用專(zhuān)題之?dāng)?shù)據(jù)控制
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL?AB?公司開(kāi)發(fā),屬于?Oracle?旗下產(chǎn)品。MySQL?是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇帶你了解數(shù)據(jù)控制2022-02-02
淺談MySQL中用什么數(shù)據(jù)類(lèi)型存IP地址
MySQL中用什么數(shù)據(jù)類(lèi)型存IP地址?在MySQL中,當(dāng)存儲(chǔ)IPv4地址時(shí),應(yīng)該使用32位的無(wú)符號(hào)整數(shù)來(lái)存儲(chǔ)IP地址,而不是使用字符串,本文就介紹一下這幾種情況,感興趣的可以了解一下2023-08-08
SQL Server 數(shù)據(jù)庫(kù)的備份詳細(xì)介紹及注意事項(xiàng)
這篇文章主要介紹了SQL Server 備份詳細(xì)介紹及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2016-12-12

