php mysqli拡張機能の前処理

WBOY
WBOYオリジナル
2016-06-23 13:29:58844ブラウズ

前回のmysqliの基礎知識の記事では、mysqliのインストールと基本的な操作(主に単一のSQL文のクエリ操作)についてお話しましたが、今日はmysqliの非常に重要な部分である前処理について紹介します。

Mysqli の操作には、多くの場合、MySQLi クラス、MySQL_STMT クラス、MySQLi_RESULT クラスの 3 つの主要なクラスが関係します。前処理は主に MySQL_STMT クラスを使用して行われます。

前処理はSQLインジェクションを防ぐ重要な手段であり、Webサイトのセキュリティを向上させる上で非常に重要です。

この記事の場合は、データベース名がtest、データテーブル名がtest、フィールドにidとtitleが含まれており、idは自動増加する主キーです。

mysqli プリプロセスを使用して挿入操作を実行します:

<?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对象,一定要记住传$sql,预处理是对sql语句的预处理。$mysqli_stmt=$mysqli->prepare($sql);//第一个参数表明变量类型,有i(int),d(double),s(string),b(blob)$mysqli_stmt->bind_param('is',$id,$title);//执行预处理语句if($mysqli_stmt->execute()){    echo $mysqli_stmt->insert_id;}else{    echo $mysqli_stmt->error;}$mysqli->close();

mysqli プリプロセスを使用して 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 "验证成功";    }else{        echo "验证失败";    }}    $mysqli_stmt->free_result();    $mysqli_stmt->close();

mysqli プリプロセスを使用してクエリ ステートメントを実行します:

$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();   //将一个变量绑定到一个prepared语句上用于结果存储    $mysqli_stmt->bind_result($id,$title);    while ($mysqli_stmt->fetch()) {        echo $id.' :'.$title.'<br/>';    }}

もっとmysqliテクノロジーをお願いします公式 PHP マニュアルを参照してください。学習するにはマニュアルを参照するのが最善の方法です~

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:工法の問題次の記事:工法の問題