<?php
$dbh = new pdo('mysql:host=localhost;dbname=test_pdo', 'root', '');
$dbh->setattribute(pdo::attr_errmode, pdo::errmode_exception);
$dbh->exec('set names utf8');
/*新增*/
$sql = "insert into `user` (`login` ,`password`)values (:login, :password)";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(':login'=>'kevin2',':password'=>''));
echo $dbh->lastinsertid();
/*修改*/
$sql = "update `user` set `password`=:password where `user_id`=:userid";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(':userid'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'));
echo $stmt->rowcount();
/*刪除*/
$sql = "delete from `user` where `login` like 'kevin_'";
$stmt = $dbh->prepare($sql);
$stmt->execute();
echo $stmt->rowcount();
/*查詢*/
$login = 'kevin%';
$sql = "select * from `user` where `login` like :login";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(':login'=>$login));
while($row = $stmt->fetch(pdo::fetch_assoc))
print_r( $stmt->fetchall(pdo::fetch_assoc));
?>
建立連線<?php
$dbh=newpdo('mysql:host=localhost;port=3306; dbname=test',$user,$pass,array(pdo::attr_persistent=>true));
?>
永續性鏈結pdo::attr_persistent => true
捕捉錯誤
<?php
trycatch(pdoexception$e)
?>
處理事務
<?php
trycatch(exception$e)
?>
錯誤處理
$dbh->setattribute(pdo::attr_errmode,pdo::errmode_silent); //不顯示錯誤
$dbh->setattribute(pdo::attr_errmode, pdo::errmode_warning);//顯示警告錯誤,並繼續執行
$dbh->setattribute(pdo::attr_errmode,pdo::errmode_exception);//產生致命錯誤,pdoexception
<?php
try
}catch(pdoexception $e)
?>
pdo::query()主要用於有記錄結果返回的操作(pdostatement),特別是select操作。
pdo::exec()主要是針對沒有結果集合返回的操作。如insert,update等操作。返回影響行數。pdo::lastinsertid()返回上次插入操作最後一條id,但要注意:如果用insert into tb(col1,col2) values(v1,v2),(v11,v22)..的方式一次插入多條記錄,lastinsertid()返回的只是第一條(v1,v2)插入時的id,而不是最後一條記錄插入的記錄id。
pdostatement::fetch()是用來獲取一條記錄。配合while來遍歷。
pdostatement::fetchall()是獲取所有記錄集到乙個中。
pdostatement::fetchcolumn([int column_indexnum])用於直接訪問列,引數column_indexnum是該列在行中的從0開始索引值,但是,這個方法一次只能取得同一行的一列,只要執行一次,就跳到下一行。因此,用於直接訪問某一列時較好用,但要遍歷多列就用不上。
pdostatement::rowcount()適用於當用query("select ...")方法時,獲取記錄的條數。也可以用於預處理中。$stmt->rowcount();
pdostatement::columncount()適用於當用query("select ...")方法時,獲取記錄的列數。
註解:1、選fetch還是fetchall?
小記錄集時,用fetchall效率高,減少從資料庫檢索次數,但對於大結果集,用fetchall則給系統帶來很大負擔。資料庫要向web前端傳輸量太大反而效率低。
2、fetch()或fetchall()有幾個引數:
mixed pdostatement::fetch([int fetch_style [,int cursor_orientation [,int cursor_offset]]])
array pdostatement::fetchall(int fetch_style)
fetch_style引數:
■$row=$rs->fetchall(pdo::fetch_both); fetch_both是預設的,可省,返回關聯和索引。
■$row=$rs->fetchall(pdo::fetch_assoc); fetch_assoc引數決定返回的只有關聯陣列。
■$row=$rs->fetchall(pdo::fetch_num); 返回索引陣列
■$row=$rs->fetchall(pdo::fetch_obj); 如果fetch()則返回物件,如果是fetchall(),返回由物件組成的二維陣列
mysql 的基本用法 mysql基本用法
mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...
mysql 的基本用法 mysql基本用法
mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...
pdo的用處,用法
pdo主要是用來對資料庫進行訪問的。pdo擴充套件為php訪問資料庫定義了乙個輕量級的一致介面,不同資料庫在訪問時,採用相同方法名稱,解決了連線資料庫不統一問題。pdo擴充套件自身並不能實現任何資料庫功能,必須使用乙個具體資料庫的pdo驅動來訪問資料庫服務。pdo特點 效能 比傳統和原生訪問資料庫方...