在php使用PDO类查询Mysql_PHP教程
1、PDO介绍
PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。与mysql和mysqli相比起来,PDO让跨数据库的使用更具有亲和力。
2、PDO的安装与配置
在php5.2.10中,php默认已经安装了pdo。
打开php.ini文件,找到extension=php_pdo.dll这一句,去掉前面的注释符号,然后重启apache即可。如果没有找到这句,可以自己添加一句或者查看系统在安装的时候是否采用了动态链接库文件.so,如果是的话,可以在php目录下找到一个conf.d的文件夹,下面有一个pdo.ini的链接文件,如果里面有一句extension=pdo.so说明已经开启了PDO。
验证一下PHP是否已经开启了PDO,首先写一个脚本,内容是
如果显示的结果中有如下内容,说明已经开启了PDO扩展。
3、创建一个PDO对象
__construct(string dsn[,string username [,string password [, array driver_options]]]);//pdo的构造方法参数解析:第一个必选参数是数据源名DSN,用来定义一个确定的数据库和必须用到的驱动程序。
如,连接oracle服务器和mysql服务器的DSN格式分别如下所示:
ocl:dbname=//127.0.0.1:1521/mydb //连接oracle服务器的dsn,oci:作为驱动前缀,主机127.0.0.1,端口1521,数据库mydb
mysql:host=127.0.0.1;dbname=testdb //连接Mysql服务器的dsn,mysql:作为驱动前缀,主机127.0.0.1,数据库testdb
$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $user = 'root'; $password = 'root'; try { $dbh = new PDO($dsn, $user, $password); }catch(PDOException $e) { echo "connect failed: ".$e->getMessage(); }
4、PDO设置属性
1) PDO有三种错误处理方式:
? PDO::ERrmODE_SILENT不显示错误信息,只设置错误码
? PDO::ERrmODE_WARNING显示警告错
? PDO::ERrmODE_EXCEPTION抛出异常
可通过以下语句来设置错误处理方式为抛出异常
$dbh->setAttribute(PDO::ATTR_ERrmODE, PDO::ERrmODE_EXCEPTION);当设置为PDO::ERrmODE_SILENT时可以通过调用errorCode() 或errorInfo()来获得错误信息,当然其他情况下也可以。
2) 因为不同数据库对返回的字段名称大小写处理不同,所以PDO提供了PDO::ATTR_CASE设置项(包括PDO::CASE_LOWER,PDO::CASE_NATURAL,PDO::CASE_UPPER),来确定返回的字段名称的大小写。
3) 通过设置PDO::ATTR_ORACLE_NULLS类型(包括PDO::NULL_NATURAL,PDO::NULL_EmpTY_STRING,PDO::NULL_TO_STRING)来指定数据库返回的NULL值在php中对应的数值。
5、PDO常用方法及其应用
PDO::query() 主要是用于有记录结果返回的操作,特别是SELECT操作
PDO::exec() 主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作
PDO::prepare() 主要是预处理操作,需要通过$rs->execute()来执行预处理里面的SQL语句,这个方法可以绑定参数,功能比较强大(防止sql注入就靠这个)
PDO::lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增ID
PDOStatement::fetch() 是用来获取一条记录
PDOStatement::fetchAll() 是获取所有记录集到一个集合
PDOStatement::fetchColumn() 是获取结果指定第一条记录的某个字段,缺省是第一个字段
PDOStatement::rowCount() :主要是用于PDO::query()和PDO::prepare()进行DELETE、INSERT、UPDATE操作影响的结果集,对PDO::exec()方法和SELECT操作无效。
6、PDO操作MYSQL数据库实例
$sql = "UPDATE article SET title="haha" WHERE id=1"; $affected = $dbh->exec($query); if($affected) { echo "successed"; }else { print_r($dbh->errorINdo()); }
预处理方式:
$SQLStatament = "INSERT INTO article VALUES(":title, :content")"; $param = array(":title" => "something", ":content" => "aaaa"); //准备的参数,对应数据库的字段 $stmt = $dbh->prepare($SQLStatement); $stmt->execute($param);
推荐阅读
-
在PHP中使用魔术方法__CLASS__来获取类名的教程
-
pdo连接数据库与查询与保存数据到mysql_PHP教程
-
zf框架的db类select查询器join链表使用示例(zend框架)_PHP教程
-
zf框架的db类select查询器join链表使用示例(zend框架)_PHP教程
-
zf框架的db类select查询器join链表使用示例_PHP教程
-
zf框架的db类select查询器join链表使用示例_PHP教程
-
php中在PDO中使用事务(Transaction)_PHP教程
-
在php使用PDO类查询Mysql_PHP教程
-
php中在PDO中使用事务(Transaction)_PHP教程
-
在php使用PDO类查询Mysql_PHP教程