PHP PDO操作MYSQL
学习要点:
1、 PHP PDO配置
2、 连接mysql及异常处理
3、 query,exec用法详解
4、 预处理prepare()用法详解
5、 PDO错误处理模式和事务处理
6、 获取和遍历结果集
7、 常用函数说明
我的博客:
一、 PDO配置
PHP 数据对象 (PDO) 扩展可以支持绝大多数的主流的数据库,如下
- Cubrid
- FreeTDS / Microsoft SQL Server / Sybase
- Firebird/Interbase 6
- IBM DB2
- IBM Informix Dynamic Server
- MySQL 3.x/4.x/5.x
- Oracle Call Interface
- ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
- PostgreSQL
- SQLite 3 及 SQLite 2
- Microsoft SQL Server / SQL Azure
- 4D
它为多种数据库的查询和获取数据,提供了一个统一的接口(数据抽象层),可以用相同的函数(方法)去实现编程要求,并且不会为数据库的迁移重写。
PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。
你可以通过 PHP 的 phpinfo() 函数来查看是否安装了PDO扩展。
Unix或Linux用户添加以下扩展:extension=pdo.so
Windows 用户
PDO 和所有主要的驱动作为共享扩展随 PHP 一起发布,要激活它们只需简单地编辑 php.ini 文件,并添加以下扩展:
extension=php_pdo.dll
这一步在 PHP 5.3及更高版本中可省略,对于 PDO 不再需要做为一个 DLL 文件。
除此之外还有以下对应的各种数据库扩展:
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
如果需要启动那个数据库的模块,只需要去除前面的“;”。
例如需要用PDO操作MYSQL,那么只要将php.ini文件中的语句中的
;extension=php_pdo_mysql.dll
改成
extension=php_pdo_mysql.dll
保存后重启PHP 或 Web服务器,然后运行一下PHP 的 phpinfo() 函数来查看是否成功安装了PDO扩展
二、 连接mysql及异常处理
测试数据:
创建一个班级数据库school,里面包含一张班级表grade,包含编号(id)、姓名(name)、邮件(email)、评分(point)、注册日期(regdate).
mysql执行代码如下:
mysql>CREATE DATABASE school;
mysql> CREATE TABLE grade (
-> id TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
-> name VARCHAR(20) NOT NULL,
-> email VARCHAR(40),
-> point TINYINT(3) UNSIGNED NOT NULL,
-> regdate DATETIME NOT NULL,
-> PRIMARY KEY (id) -> );
//给这个班级表grade 新增几条学员记录
mysql> INSERT INTO grade (name,email,point,regdate) VALUES
('zend','zend@gmail.com',95,NOW());
//依次增加
在web目录下新建config.php,代码如下 :
<?php
header('Content-Type:text/html; charset=utf-8');
define('DB_MS', 'mysql');
define('DB_HOST', 'localhost');
define('DB_NAME', 'school');
define('DB_USER', 'root');
define('DB_PASS', '');
$dsn=DB_MS.':host='.DB_HOST.';dbname='.DB_NAME;
try {
//$DB=new PDO($dsn,DB_USER,DB_PASS, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
$DB=new PDO($dsn,DB_USER,DB_PASS);
$DB->exec('SET NAMES UTF8');
echo "数据库连接成功!"."<br />";
ignore_user_abort();
}catch (PDOException