ホームページ > データベース > mysql チュートリアル > php mysqli拡張の前処理例を詳しく解説

php mysqli拡張の前処理例を詳しく解説

零下一度
リリース: 2017-06-28 16:19:26
オリジナル
1693 人が閲覧しました

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

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

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

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

<?php 
define("HOST", "localhost");define("USER", &#39;root&#39;);define("PWD", &#39;&#39;);define("DB", &#39;test&#39;);$mysqli=new Mysqli(HOST,USER,PWD,DB);if ($mysqli->connect_errno) {    "Connect Error:".$mysqli->connect_error;
}$mysqli->set_charset(&#39;utf8&#39;);$id=&#39;&#39;;$title=&#39;title4&#39;;//用?代替 变量$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(&#39;is&#39;,$id,$title);//执行预处理语句if($mysqli_stmt->execute()){    echo $mysqli_stmt->insert_id;
}else{    echo $mysqli_stmt->error;
}$mysqli->close();
ログイン後にコピー


mysqli 前処理を使用して SQL インジェクションを防止します:

$id=&#39;4&#39;;$title=&#39;title4&#39;;$sql="SELECT * FROM test WHERE id=? AND title=?";$mysqli_stmt=$mysqli->prepare($sql);$mysqli_stmt->bind_param(&#39;is&#39;,$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(&#39;i&#39;,$id);if($mysqli_stmt->execute()){    $mysqli_stmt->store_result();   //将一个变量绑定到一个prepared语句上用于结果存储    $mysqli_stmt->bind_result($id,$title);    while ($mysqli_stmt->fetch()) {        echo $id.&#39; :&#39;.$title.&#39;<br/>&#39;;
    }


}
ログイン後にコピー


以上がphp mysqli拡張の前処理例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート