PHP學習筆記_PDO使用學習

PHP PDO使用學習


基礎概念

        PDO是PHP Date Object的簡稱,隨PHP5.1發佈,支持多種數據庫(Firebird、freeTDS、Interbase、MySql等),使用時僅需使用PDO接口中的方法就可以對數據庫進行操作,選擇不同的數據庫僅需修改PDO中的DSN(數據源名稱)即可。
        PDO是一個“數據庫訪問抽象層”;作用是統一各種數據庫的訪問接口,與mysql函數可以相比,跨數據庫能力更強;與ADODB相比,效率更高。

PDO配置

linux環境(使用mysql)
在configure命令中添加如下代碼

--with-pdo-mysql=/path/to/mysql/installation

Windows環境(使用mysql)
在php.ini文件中添加

extension=php_pdo.dll
extension=php_mysql_pdo.dll

或者將這兩句的註釋去掉(該文件中的註釋格式是#或者:)

PDO連接數據庫

首先需要實例化一個PDO對象
PDO構造函數

__constructs(string $dsn[,string $username[,string $password[,array $driver_options]]])

$dsn:數據源名,包括主機名端口號和數據庫名稱
$username:連接數據庫的用戶名
$password:連接數據庫的密碼
$dirver_options:連接數據庫選項(驅動選項數組){例如array(PDO:ATTR_PERSISTENT => true),這樣數據庫連接即爲持久鏈接}
例(連接mysql數據庫):

<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'test';
$user = 'root';
$password = '';
$dsn = "$dbms:host=$host;dbname=$dbName";

try
{
	$dbh = new PDO($dsn,$user,$password);		//初始化PDO對象
	echo "連接成功!";
	foreach ($dbh->query('SELECT * FORM FOO') as $row)
	{
        print_r($row);
	}
	$dbh = null;								//將連接返回的PDO對象置空,相當於將連接斷開
}
?>

        DSN :Date Source Name(數據源名稱) 提供連接數據庫需要的信息。
        格式爲三部分:PDO驅動名稱(如mysql、sqlite等);冒號和驅動特定的語法。
例如:連接數據庫mysql

$dsn="$mysql:host=localhost;port=3303;dbname=test"

        因爲數據庫服務器和PHP腳本不在一個服務器上,而數據庫盡在特定端口上監聽連接請求(mysql是3306),單數據庫管理員可能會修改端口號,多以PHP腳本有可能會找不到數據庫的端口,此時可以在DSN中包含端口號。


PDO執行Sql語句


exec方法

int PDO:exec(string statement);		//statement爲待執行的Sql語句

返回執行後受影響的行數,通常用於insert、delete和update語句。

query方法

PDOStatement PDO::query(string statement);	//statement爲待執行的Sql語句

返回PDOStatement對象。

預處理語句–prepare和execute

使用prepare預處理查詢語句,之後使用execute執行

PDOStatment PDO::prepare(string statement[,array driver_options]);
bool PDOStatement::excute([array input_parameters]);

PDO中獲取結果集


fetch方法

mixed PDOStatement ::fetch([int fetch_style[,int cursor_orientation[,int cursor_offset]]]);

fetch_style爲控制結果集的返回方式

fetch_style值返回值形式
PDO::FETCH_ASSOC關聯數組
PDO::FETCH_NUM數字索引數組
PDO::FETCH_BOTH兩者數組形式都有(默認返回)
PDO::FETCH_OBJ對象形式
PDO::FETCH_BOUND數字索引數組
PDO::FETCH_LAZY以關聯數組、數字索引數組、對象三種形式返回
cursor_orientation:PDOStatement對象的一個滾動遊輪、可用於獲取指定的一行
cursor_offset:遊標的偏移量

使用方法如下:

<?php
$dsn = "mysql:host='localhost';port=3306;dbname='test'";
$user = "root";
$password = "";
try
{
    $pdo = new PDO($dsn,$user,$password)	//連接數據庫,連接失敗彈出異常
    $query = "select * from user_message";	//sql查詢語句
    $result = $pdo->prepare($query);		//準備查詢語句
    $result->excute();						//執行查詢語句並返回結果集
    while($res = $result->fetch(PDO::FETCH_ASSOC))	//獲取查詢結果並輸出
    	echo $res['id'].$res[...];
}catch(PDOException $e){
    die ("Error:".$e->getMessage()."<br>");
}
$pdo = NULL;								//釋放連接

fetchAll方法

array PSOStatement::fetchAll([int fetch_style[,int column_index]]);

fetch_style:同fetch()方法中的fetch_style
column_index:字段的索引
返回一個包含結果集所有數據的二維數組,例如:$res[$i][‘id’]、$res[$i][…]等

fetchColumn方法

string PDOStatement::fetchColumn([int column_num]);

column_num:設置行中列的索引值,從0開始,若省略該參數,則從第一列開始取值。


返回值 :結果集中下一行中的指定列的值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章