使用mysli防止sql注入
Posted 王大宝儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mysli防止sql注入相关的知识,希望对你有一定的参考价值。
自从 php5 推出 mysqli 后就开始不提倡使用 mysql_ 开头的接口了,现在使用 mysql_connet 通常调试的时候会报警告说这个不该用
mysqli 使用起来其实更简单
$url = "localhost"; $usr = "root"; $paw = "123"; $database = "mdb"; //$link = 0; $link = mysqli_connect($url,$usr,$paw,$database) or die("Error " . mysqli_error($link)); $query = "SELECT gitid,cid from carts where uid = $uid "; $result = $link->query($query); while($row=mysqli_fetch_array($result)){ //do you action }
PDO其实也是不错的选择,mysqli自然更方便
官网其实已经说明了:http://php.net/manual/en/mysqlinfo.api.choosing.php
下面讲讲如何在服务器端防注入(当然用JS检查表单也很常用)。
SQL注入很容易理解,例如获取表单数据
$stmt = $mysqli->prepare("INSERT INTO table_name (name) VALUES (?)"); $stmt->bind_param(\'s\', $postedName); //只要确保参数在下一步 execute 之前赋值就行了 $stmt->execute();
很简单, 在 prepare 函数里面把参数用 ‘?’ 来替代,然后使用 bind_param 绑定参数。在 bind_param 中,第一个参数 \'s\' 代表了参数的类型与个数(此处为一个字符串类型)。如官方的例子
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)"); $stmt->bind_param(\'sssd\', $code, $language, $official, $percent);
就是绑定了四个参数,三个为字符串,一个为数字。非常简便。
这样一来就不用怕一个参数被恶意扩展为一个语句来捣乱了。
注:本文由王智磊(王大宝儿)整理编写,也参考借鉴了很多大神的笔记,分享代码,分享成功,欢迎各位交流和转载,转载请注明出处(博客园:王大宝儿)http://www.cnblogs.com/wangzhilei/
以上是关于使用mysli防止sql注入的主要内容,如果未能解决你的问题,请参考以下文章