1. query(), fetch(), fetchAll(), rowCount(), exec()綜合應用
<?php
$dsn="mysql:host=localhost;dbname=guestbook";
$db=new PDO($dsn,'root','123'); //連接數據庫
$db->query('set names utf-8');
$affected=$db->exec("update lyb set content='用PDO修改記錄' where ID=2014211253"); //exec()返回受影響的記錄數
echo "<p>共有".$affected."行記錄被修改</p>";
$result=$db->query('select * from lyb');
$result->setFetchMode(PDO::FETCH_ASSOC); //設置fetch()方法爲關聯數組
var_dump($result); //與mysql不同的是,結果集返回的是對象類型,而mysql是資源類型
echo "<br /><br />";
print_r($row=$result->fetch()); //可以在函數內加參數,默認混合數組,(1或2)關聯數組,3索引數組
echo "<br />共有".$result->rowCount()."行<br /><br />";
$row_dim2=$result->fetchAll(); //讀取所有記錄到二維數組$row_dim2中
foreach ($row_dim2 as $row) { //將每條記錄放到數組$row中
print_r($row); //依次打印每條記錄
echo "<br />";
}
?>
2. 使用prepare()方法執行預處理語句
2.1 插入
<?php
$dsn="mysql:host=localhost;dbname=guestbook";
$db=new PDO($dsn,'root','123',array(PDO::ATTR_PERSISTENT=>true)); //長連接
$db->query('set names utf-8');
$sql="insert into lyb(title,content,author) values(?,?,?)";
//用?作佔位符,等價於 $sql="insert into lyb(title,content,author) values(:title,:content,:author);
$stmt=$db->prepare($sql); //返回一個查詢對象,準備執行查詢
$title='PDO預處理'; $content='這是插入的記錄'; $author='bingo';
$stmt->bindParam(1,$title); //綁定參數,等價於 $stmt->bindParam(':title',$title);
$stmt->bindParam(2,$content);
$stmt->bindParam(3,$author);
$stmt->execute(); //【執行語句】,將插入一條記錄
#可以用該句話代替上面五句話 $stmt->execute(array('PDO預處理','這是插入的記錄','bingo'));
echo "新插入記錄的ID號是:".$db->lastInsertId();
# 如果要再插入記錄,只要添加下面的代碼即可
$title='第二條'; $content='這是另一條插入的記錄'; $author='ognib';
$stmt->execute();
echo "<br />新插入記錄的ID號是:".$db->lastInsertId();
?>
2.2 查詢
<?php
$dsn="mysql:host=localhost;dbname=guestbook";
$db=new PDO($dsn,'root','123'); //連接數據庫
$db->query('set names utf-8');
$sql='select * from lyb where title like ?'; //【注意】不能寫成%?%的形式,因爲佔位符必須用於整個值的位置
$stmt=$db->prepare($sql); //創建一個查詢對象,準備執行語句
$title='哈';
$stmt->execute(array("%$title%")); //執行查詢的時候同時綁定數組,execute()中的參數是一個數組
$row=$stmt->fetch(1); //以關聯數組的形式將結果集中的[第一條]記錄取出
echo "<br /><br />";
var_dump($row); //輸出數組
echo "<br /><br />".$row['title'];
?>