您好,登錄后才能下訂單哦!
PDO的誕生是為了解決不同數據庫需要不同的PHP類庫:
如此,一個'類庫'就能搞定
優點:
1,編碼一致性,2,高適應性,3,面向對象,4,高性能(PDO由c編譯)
開啟支持:(PHP5.1+默認開啟)
linux下編譯時追加參數: --with-pdo-mysql
windows下修改PHP.ini 開啟或追加
extension=php_pdo.dll
extension=php_pdo_mysql.dll
查看當前環境支持的PDO驅動:
1,
phpinfo();
2,
print_r(pdo_drivers());
連接并選擇數據庫(3種方法):
mysql:數據庫名;
dbuser:用戶名;
pswd:密碼;
1,直接用構造函數傳參
$dbh = new PDO('mysql:host=localhost;dbname=mysql', 'dbuser', 'pswd');
2,將連接參數保存到dsn文件
$dbh = new PDO('uri:file://usr/local/mysql.dsn');
3,寫到php.ini中,連接別名:mysqlpdo
[PDO]
pdo.dsn.mysqlpdo = 'mysql:dbname=mysql;host=localhost'
$dbh = new PDO('mysqlpdo', 'dbuser', 'pswd');
PDO __construct 原型:
PDO PDO::__construct(string DSN [, string username [, string password[, array driver_opts]]])
第四個參數主要是一些可選的配置(數組形式傳參):
常用如下:
1,PDO::ATTR_AUTOCOMMIT //是否自動提交事務
2,PDO::ATTR_CASE //查詢返回的字段名大小寫 可用: PDO::CASE_UPPER,PDO::CASE_LOWER,PDO::CASE_NATURAL(原樣)
3,PDO::ATTR_EMULATE_PREPARES //開啟Mysql查詢緩存
4,PDO::ATTR_ERRMODEPDO //錯誤類型 可用: PDO::ERRMODE_EXCEPTION(報異常), PDO::ERRMODE_SILENT(默認,不會顯示任何錯誤),PDO::ERRMODE_WARNING(報PHP E_WARNING).
5,PDO::ATTR_ORACLE_NULLS //默認為FALSE 當設置為TRUE時 '空' 轉化為 NULL
6,PDO::ATTR_PERSISTENT //持久連接 默認為FALSE
7,PDO::ATTR_PREFETCH //'預取' 當你的查詢一次只需一行結果,這個開啟后,會得到多行,減少查詢次數
8,PDO::ATTR_TIMEOUT //查詢超時 Mysql暫不支持
9,PDO::DEFAULT_FETCH_MODE //數據取回模式 關聯數組/索引數組/對象
設置與獲得參數:
$dbh->getAttribute($attribute); $dbh->setAttribute($attribute,$value);
例:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
處理連接錯誤:
try { $dbh = new PDO('mysql:host=localhost;dbname=mysql', 'dbuser', 'pswd'); } catch (PDOException $exception) { echo "Connection error: " . $exception->getMessage(); }
獲取錯誤信息:
int PDOStatement::errorCode() array PDOStatement::errorInfo() //0=>sqlstate , 1=>驅動 error code ,2=>驅動 error message
執行SQL:
$dbh->exec(); //update insert delete 無結果集 $dbh->query(); //單次select 有結果集; 多次請用prepare function getFruit($dbh) { $sql = 'SELECT name, color, calories FROM fruit ORDER BY name'; foreach ($dbh->query($sql) as $row) { print $row['name'] . "\t"; print $row['color'] . "\t"; print $row['calories'] . "\n"; } }
返回受上一個 SQL 語句影響的行數:
int PDOStatement::rowCount ( void )
時間有限,稍后再學習多次查詢用到的prepare
感謝各位糾錯,指正
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。