文章目錄
一、什麼是PDO?
PDO是PHP Date Object(PHP數據對象)的簡稱,它是與PHP 5.1版本一起發行的。
目前支持的數據庫包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、Postgre SQL、SQLite和Sybase。
有了PDO,您不必再使用mysql_*函數、oci_*函數或者mssql_*函數,也不必再爲它們封裝數據庫操作類,只需要使用PDO接口中的方法就可以對數據庫進行操作。在選擇不同的數據庫時,只需修改PDO的DSN(數據源名稱)。
在PHP 6中將默認使用PDO連接數據庫,所有非PDO擴展將會在PHP 6中被移除。該擴展提供PHP內置類PDO來對數據庫進行訪問,不同數據庫使用相同的方法名,以解決數據庫連接不統一的問題。
二、PDO的作用與特點
2.1 統一各種數據庫的訪問接口
PDO是一個“數據庫訪問抽象層”,作用是統一各種數據庫的訪問接口,與mysql和mssql函數庫相比,PDO讓跨數據庫的使用更具有親和力;與ADODB和MDB2相比,PDO更高效。
三、PDO的啓用
PDO是與PHP 5.1一起發行的,默認包含在PHP 5.1中。
由於PDO需要PHP 5.0核心面向對象特性的支持,因此其無法在PHP 5.0之前的版本中使用。
默認情況下,PDO在PHP 5.2中爲開啓狀態,但是要啓用對某個數據庫驅動程序的支持,仍需要進行相應的配置操作。
- 在Windows環境下,PDO在php.ini文件中進行配置,如果想支持某個特定數據庫,只需要把php.ini 文件裏邊所對應的 ;號 去掉即可。
我們先找到php.ini 配置文件,然後進入
搜索 pdo_
可以看到我們這裏只打開了 mysql和sqlite。
注意:開啓過後需要重啓Apache
3.1 我們可以使用 phpinfo() 函數來查看是否開啓。
可以看到我們成功開啓!
四、通過PDO連接數據庫
4.1 PDO的構造函數
在PDO中,要建立與數據庫的連接需要實例化PDO的構造函數,PDO構造函數的語法如下:
__construct(string $dsn[,string $username[,string $password[,array $driver_options]]])
- dsn:數據源名,包括主機名、端口號和數據庫名稱。
- username:連接數據庫的用戶名。
- password:連接數據庫的密碼。
- driver_options:連接數據庫的其他選項。
格式:mysql,db_databvase17,127.0.0.1,root,123456
實例:
$dbms='mysql';//數據庫類型
$host='127.0.0.1';//數據庫主機名 也可以是127.0.0.1
$dbName='db_database17';//使用的數據庫名稱
$user='root';//用戶名
$pass='123456';//對應的密碼
$dsn="$dbms:dbname=$dbName;host=$host";
$conn= new PDO($dsn,$user,$pass);//初始化一個PDO對象,就是創建了連接數據庫的對象 $conn
構造函數用於,構造PDO對象,有了這個對象,我們我就可以使用裏邊的方法來訪問數據庫。
4.1.1 exec()方法 返回執行後受影響的行數
exec()方法返回執行後受影響的行數,:
通常用於 INSERT、DELETE和UPDATE語句中。
實例:
try{
$conn= new PDO($dsn,$user,$pass);//初始化一個PDO對象,就是創建了連接數據庫的對象 $conn
$query="insert into tb_pdo_mysql(pdo_type,database_name,dates)values('".$_POST['pdo']."','".$_POST['databases']."','".$_POST['dates']."')";
$result=$conn->exec($query);
echo "數據添加成功,受影響的行數爲:".$result;
} catch (PDOException $e){
die ("Error!:".$e->getMessage().'<br/>');
}
效果:
4.1.2 query()方法 用於返回執行查詢後的結果集
query()方法用於返回執行查詢後的結果集:
實例:
try{
$pdo = new PDO($dsn,$user,$pass);
$sql = 'select * from tb_pdo_mysql';
$result = $pdo->query($sql);
foreach ($result as $row) {
echo "<tr align='center'>"."<td>".$row['id']."</td>";
echo "<td>".$row['pdo_type']."</td>";
echo "<td>".$row['database_name']."</td>";
echo "<td>".$row['dates']."</td>"."</tr>";
}
} catch (PDOException $e){
die ("Error!:".$e->getMessage().'<br/>');
}
效果: