background image

Php 中用 PDO 查询 Mysql 避免 SQL 注入风险的方法

本文主要介绍了,Php 中用 PDO 查询 Mysql 来避免 SQL 注入风险的方法。供大家参考

 

当我们使用传统的 mysql_connect 、mysql_query 方法来连接查询数据库时,如果过滤不严,
就有 SQL 注入风险,导致网站被攻击,失去控制。虽然可以用 mysql_real_escape_string()
函数过滤用户提交的值,但是也有缺陷。而使用 PHP 的 PDO

 

扩展的 prepare 方法,就可以

避免 sql injection 风险。
PDO(PHP Data Object) 是 PHP5 新加入的一个重大功能,因为在 PHP 5 以前的 php4/php3

 

都是一堆的数据库扩展来跟各个数据库的连接和处理,如 php_mysql.dll  

。 PHP6 中也将默

认 使 用 PDO 的 方 式 连 接 , mysql

 

扩 展 将 被 作 为 辅 助

。 官 方 :

http://php.net/manual/en/book.pdo.php
1、PDO 配置
使用 PDO 扩展之前,先要启用这个扩展,PHP.ini 中,去掉"extension=php_pdo.dll"前面
的";"号,若要连接数据库,还需要去掉与 PDO 相关的数据库扩展前面的";"号(一般用的
是 php_pdo_mysql.dll),然后重启 Apache

 

服务器即可。

代码如下:

extension=php_pdo.dll
extension=php_pdo_mysql.dll

2、PDO 连接 mysql

 

数据库

代码如下:

$dbh = new PDO("mysql:host=localhost;dbname=db_demo","root","password");

默认不是长连接,若要使用数据库长连接,需要在最后加如下参数:
代码如下:

$dbh

 

=

 

new 

PDO("mysql:host=localhost;dbname=db_demo","root","password","array(PDO::ATTR_PERSIST
ENT => true)");
$dbh = null; //(释放)

3、PDO 设置属性
1) PDO 有三种错误处理方式:
• PDO::ERrmODE_SILENT 不显示错误信息,只设置错误码
• PDO::ERrmODE_WARNING 显示警告错
• PDO::ERrmODE_EXCEPTION 抛出异常
可通过以下语句来设置错误处理方式为抛出异常