一、PDO
代表一个PHP和数据库之间的连接。
方法:
- PDO - 构造器,构建一个新的PDO对象
- beginTransaction - 开始事务
- commit - 提交事务
- errorCode - 从数据库返回一个错误代号,如果有的话
- errorInfo - 从数据库返回一个含有错误信息的数组,如果有的话
- exec - 执行一条SQL语句并返回影响的行数
- getAttribute - 返回一个数据库连接属性
- lastInsertId - 返回最新插入到数据库的行(的ID)
- prepare - 为执行准备一条SQL语句,返回语句执行后的联合结果集(PDOStatement)
- query - 执行一条SQL语句并返回一个结果集
- quote - 返回添加了引号的字符串,以使其可用于SQL语句中
- rollBack - 回滚一个事务
- setAttribute - 设置一个数据库连接属性
二、PDOStatement
代表一条预处理语句以及语句执行后的联合结果集(associated result set)。
方法:
- bindColumn - 绑定一个PHP变量到结果集中的输出列
- bindParam - 绑定一个PHP变量到一个预处理语句中的参数
- bindValue - 绑定一个值到与处理语句中的参数
- closeCursor - 关闭游标,使语句可以再次执行
- columnCount - 返回结果集中的列的数量
- errorCode - 从语句中返回一个错误代号,如果有的话
- errorInfo - 从语句中返回一个包含错误信息的数组,如果有的话
- execute - 执行一条预处理语句
- fetch - 从结果集中取出一行
- fetchAll - 从结构集中取出一个包含了所有行的数组
- fetchColumn - 返回结果集中某一列中的数据
- getAttribute - 返回一个 PDOStatement 属性
- getColumnMeta - 返回结果集中某一列的结构(metadata?)
- nextRowset - 返回下一结果集
- rowCount - 返回SQL语句执行后影响的行数
- setAttribute - 设置一个PDOStatement属性
- setFetchMode - 为 PDOStatement 设定获取数据的方式
$db->exec("set names 'gbk'"); //设置编码
//持久连接
- $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
- PDO::ATTR_PERSISTENT => true;
- ));
<?php
//预处理
$dbh = new PDO("mysql:host=localhost;dbname=chp31","uname","upwd");
$query = "select * from products order by title";
$result = $dbh->query($query);
$result->columnCount();//结果集总数
$query = "insert into product set sku=:sku,title=:title";
$stmt = $dbh->prepare($query);
$stmt->execute(array(":sku"=>"adsf",":title"=>"1234"));
$stmt->execute(array(":sku"=>"dgh",":title"=>"adf"));
//绑定参数
$dbh = new PDO("mysql:host=localhost;dbname=chp31","uname","upwd");
$query = "insert into product set sku=:sku,title=:title";
$stmt = $dbh->prepare($query);
$sku = "1234";
$title = "asdf";
$stmt->bindParam(":sku",$sku);
$stmt->bindParam(":title",$title);
$stmt->execute();
$stmt->bindParam(":sku","asdfadf");
$stmt->bindParam(":title","ccccccadf");
$stmt->execute();
//?
$query = "insert into products set sku=?,title=?";
$stmt->bindParam(1,"asdfadf");
$stmt->bindParam(2,"ccccccadf");
?>
<?php
$pdo=new PDO("mysql:host=localhost;dbname=test","root","root");
$pdo->exec("INSERT INTO `test`.`users` (`id` ,`uname` ,`upwd` ,`email` )VALUES (NULL , 'a', 'a', 'a');");
echo "newID:".$pdo->lastInsertId()."<br/>";
$result=$pdo->query("select * from users");
/*while($row=$result->fetch()){
print_r($row);
}*/
$arr=$result->fetchAll();
print_r($arr);
?>
事物回滚
try{
$dbh=new PDO('mysql:host=localhost;dbname=test','root','root',
array(PDO::ATTR_PERSISTENT => true));
echo"Connected\n";
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$dbh->exec("insert into users set uname='zsc',upwd='123',email='163'");
$dbh->exec("insert into usersz set uname='zsc',upwd='123',email='163'");
$dbh->commit();
}catch(Exception $e){
$dbh->rollBack();
echo"Failed: ".$e->getMessage();
}