1.计算返回的行数
<?php
$dsn="mysql:host=localhost;dbname=produce";
$user='root';
$pwd='';
$array=array("orange","pear","banana");
try{
$dbh=new PDO($dsn,$user,$pwd);
$sql="SELECT COUNT(*) from fruit WHERE name='pear'";
$stmt=$dbh->prepare($sql);
$result=$stmt->execute();
echo "there are ".$stmt->fetchcolumn()."rows returned";
}
catch(PDOException $e){
echo $e->getmessage;
}
?>
PDO没有能够计算select查询返回行数的魔术方法,但是可以使用PDOStatement->rowCount方法利用一些PDO数据库驱动返回select语句返回的行数,但是这种方法不通用
本例中使用sql的聚合参数COUNT
以上主要是查询select返回的行
下面介绍的是被update,insert影响的行
<?php
$dsn="mysql:host=localhost;dbname=produce";
$user='root';
$pwd='';
$array=array("orange","pear","banana");
try{
$dbh=new PDO($dsn,$user,$pwd);
$sql="INSERT INTO fruit (name,number) VALUES ('gcc',12)";
$stmt=$dbh->prepare($sql);
$stmt->execute();
echo "受影响的行".$stmt->rowCount():
}
catch(PDOException $e){
echo $e->getmessage;
}
?>
计算受影响的行用到了rowCount函数
如何获得一个新插入行的自动增加字段
PDO提供了lastinsertid方法,它会返回上一个insert操作产生的id
<?php
$dsn="mysql:host=localhost;dbname=produce";
$user='root';
$pwd='';
$array=array("orange","pear","banana");
try{
$dbh=new PDO($dsn,$user,$pwd);
$sql="INSERT INTO fruit (name,number) VALUES('gbd',122)";
$stmt=$dbh->prepare($sql);
$result=$stmt->execute();
echo $dbh->LastInsertID();
}
catch(PDOException $e){
echo $e->getmessage;
}
?>
使用lastinsertid方法时,一定要使用PDO对象($dbh)而不是PSOStatement对象($stmt)
如何显示select查询的行数
$sql="SELECT * FROM fruit WHERE name LIKE 'g%'";
while($row=$dbh->query($sql)){
print $row['name'];
print $row['number'];
} 此处使用的query语句查询
$sql="SELECT * FROM fruit WHERE name LIKE 'g%'";
$stmt=$dbh->prepare($sql);
$stmt->execute();
while($row=$stmt->fetchObject()){
print $row['name'];
print $row['number'];
}
或者while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
print $row['name'];
print $row['number'];
}
使用PDO->beginTransaction 方法开始事务处理
使用PDO->commit结束它
如果中间发生了问题,使用PDO->rollback方法撤销前面的指令