PHP PDO-MySQL快速上手

311 查看

PHP在PHP6之后将mysql_connect等旧的数据库操作将会被废弃,取而代之的是更加强大PDO来操作数据库

PDO是PHP5新增的

(一)启用PDO
在php.ini中找到 extension=php_pdo_mysql.dll 将这行前面的“ ; ”去掉即启用了 PHP MySQL的pdo扩展

重启Apache
(二)创建PDO对象

如果使用了自动加载 function __autoload(){} 则需要使用命名控件来防止自动加载去加载PDO类

use PDO;

$pdo=new PDO(“mysql:host=localhost;dbname=test”,‘root’,”); 

使用以上代码获取PDO对象

长连接PDO对象获取方式:

new PDO(“mysql:host=localhost;dbname=test”,‘root’,”,array(PDO::ATTR_PERSISTENT => true));

(三)使用PDO对象进行增删查改
(1)query查询 适用于执行 select语句

$pdo->query(“select * from test”);

返回一个二维数组

(2)exec查询 适用于执行insert update delete语句

$pdo->exec(“delete from test where id=1”);

返回受影响行数,如果是insert 则返回auto_increment的值
(四)使用PDO进行参数绑定查询

(1)使用prepare方法获取PDO语句执行器

$executor=$pdo->prepare(“select * from test where id=?”);

(2)执行select查询 并获取查询结果

$id=1;

$executor=$pdo->prepare(“select * from test where id=?”);

$executor->bindParam(1,$id);//绑定参数到 第一个占位符 占位符索引从1开始

$executor=$pdo->execute();//执行语句

$result=$pdo->fetchALL();//关联数组+数字索引形式返回结果

如果想返回关联数组形式的结果则使用fetchALL(PDO::FETCH_ASSOC);

纯数字索引PDO::FETCH_NUM

对象索引FETCH_OBJ

默认的关联+数字索引FETCH_BOTH
使用bindParam来绑定参数 第二个值只能传入变量,如果要传入字面常量需要使用bindValue

execute()方法执行成功返回true 失败返回false

(3)执行insert查询 并获取auto_increment值

$executor=$pdo->prepare(“insert into test(name) values(?)”);

$executor=$pdo->bindValue(1,’黑皮’);

$executor->execute();

$insertId=$pdo->lastInsertId();//这里通过pdo对象来获取最后插入的id

PS:该insertId为本连接插入的最新auto_increment值 其他连接对数据库的操作不影响该次连接获取auto_increment的值

(3) 执行update、delete查询 并返回受影响的行数

$executor=$pdo->prepare(“update test set name=? where id=?”);

$executor->bindValue(1,”我叫黑皮”);

$executor->bindValue(2,1);

$executor->execute();

$rowCount=$executor->rowCount();//使用executor执行器获取此次查询受影响的行数

delete和update一样的 我就不写了~~~