```
$pdo = new PDO('mysql:host=localhost;dbname=douphp','root','123456');
$sql = 'select * from dou_article';
$smt = $pdo->query($sql);
$rows = $smt->fetchAll(PDO::FETCH_ASSOC);
```
執行,增,改,刪:$pdo->exec($sql); 更新一樣的則不更新,返回0
設置客戶端字符集為utf8:$pdo->exec('set names utf8');
預處理:(不能提高速度,但是可以避免sql注入風險,建議使用)
增刪改:
```
$pdo = new PDO('mysql:host=localhost;dbname=douphp','root','123456');
$sql = 'select * from dou_article';
$smt = $pdo->prepare($sql); #預處理sql語句
if($smt->execute()) {
$tot = $smt->rowCount();#返回影響的行數
echo 'successful';
}else {
echo 'error';
}
```
查詢:
```
$pdo = new PDO('mysql:host=localhost;dbname=douphp','root','123456');
$sql = 'select * from dou_article';
$smt = $pdo->prepare($sql);
$smt = execute();
$rows = $smt->fetchAll(PDO::FETCH_ASSOC);
pdostatement類:
fetchAll
fetch #獲取一行數據
fetchColumn
execute
rowCount
bindValue #預處理綁定值(sql="select ...where id=?")
lastInsertId
setAttribute()//可以在之前設置查詢結果集以什么形式返回
$pdo = new PDO('mysql:host=localhost;dbname=douphp','root','123456');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
```
PDO事物處理:
事務機制:(只有引擎是InnoDB才支持)
beginTransaction():開啟任務
commit():成功提交本次任務
rollback():失敗撤消本次任務
PDOException:異常處理:
getMessage()
getFile()
getLine()
一次事物機制的案例,同時刪除兩條數據,如果有一條出錯,則退回,都不執行
```
$pdo = new PDO('mysql:host=localhost;dbname=douphp','root','123456');
$pdo->exec('set names utf8');
#修改拋出異常模式,默認為不拋出
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
#開啟事物
$pdo->beginTransaction();
try{
#一次刪除
$sql = "delete from user where id =1";
$smt=$pdo->prepare($sql);
$smt->execute();
#一次刪除
$sql = "delete from user where id =1";
$smt=$pdo->prepare($sql);
$smt->execute();
//沒錯提交
$pdo->commit();
}catch(PDOException $e) {
echo $e->getMessage();#打印出錯誤信息
//有錯撤回
$pdo->rollBack();
}
```