明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

php mysqli擴(kuò)展之預(yù)處理案例詳細(xì)說(shuō)明

[摘要]在前一篇 mysqli基礎(chǔ)知識(shí)中談到mysqli的安裝及基礎(chǔ)操作(主要是單條sql語(yǔ)句的查詢(xún)操作),今天介紹的是mysqli中很重要的一個(gè)部分:預(yù)處理! ≡趍ysqli操作中常常涉及到它的三個(gè)主要類(lèi):MySQLi類(lèi),MySQL_STMT類(lèi),MySQLi_RESULT類(lèi)。預(yù)處理主要是利用MySQL...
在前一篇 mysqli基礎(chǔ)知識(shí)中談到mysqli的安裝及基礎(chǔ)操作(主要是單條sql語(yǔ)句的查詢(xún)操作),今天介紹的是mysqli中很重要的一個(gè)部分:預(yù)處理。

  在mysqli操作中常常涉及到它的三個(gè)主要類(lèi):MySQLi類(lèi),MySQL_STMT類(lèi),MySQLi_RESULT類(lèi)。預(yù)處理主要是利用MySQL_STMT類(lèi)完成的。

  預(yù)處理是一種重要的 防止SQL注入的手段,對(duì)提高網(wǎng)站安全性有重要意義。

  本文案例為 數(shù)據(jù)庫(kù)名為test,數(shù)據(jù)表名為test, 字段有id ,title 兩個(gè),id自增長(zhǎng)主鍵。

<?php 
define("HOST", "localhost");define("USER", 'root');define("PWD", '');define("DB", 'test');$mysqli=new Mysqli(HOST,USER,PWD,DB);if ($mysqli->connect_errno) {    "Connect Error:".$mysqli->connect_error;
}$mysqli->set_charset('utf8');$id='';$title='title4';//用?代替 變量$sql="INSERT test VALUES (?,?)";//獲得$mysqli_stmt對(duì)象,一定要記住傳$sql,預(yù)處理是對(duì)sql語(yǔ)句的預(yù)處理。$mysqli_stmt=$mysqli->prepare($sql);//第一個(gè)參數(shù)表明變量類(lèi)型,有i(int),d(double),s(string),b(blob)$mysqli_stmt->bind_param('is',$id,$title);//執(zhí)行預(yù)處理語(yǔ)句if($mysqli_stmt->execute()){    echo $mysqli_stmt->insert_id;
}else{    echo $mysqli_stmt->error;
}$mysqli->close();


使用mysqli預(yù)處理防止sql注入:

$id='4';$title='title4';$sql="SELECT * FROM test WHERE id=? AND title=?";$mysqli_stmt=$mysqli->prepare($sql);$mysqli_stmt->bind_param('is',$id,$title);if ($mysqli_stmt->execute()) {    $mysqli_stmt->store_result();    if($mysqli_stmt->num_rows()>0){        echo "驗(yàn)證成功";
    }else{        echo "驗(yàn)證失敗";
    }
}    $mysqli_stmt->free_result();    $mysqli_stmt->close();


使用mysqli預(yù)處理執(zhí)行查詢(xún)語(yǔ)句:


$sql="SELECT id,title FROM test WHERE id>=?";$mysqli_stmt=$mysqli->prepare($sql);$id=1;$mysqli_stmt->bind_param('i',$id);if($mysqli_stmt->execute()){    $mysqli_stmt->store_result();   //將一個(gè)變量綁定到一個(gè)prepared語(yǔ)句上用于結(jié)果存儲(chǔ)    $mysqli_stmt->bind_result($id,$title);    while ($mysqli_stmt->fetch()) {        echo $id.' :'.$title.'<br/>';
    }


}

以上就是php mysqli擴(kuò)展之預(yù)處理實(shí)例詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門(mén)到精通的SQL知識(shí)。