2012年9月26日星期三

PHP5中使用PDO连接数据库

1.什么是PDO?


   PDO(PHP Data Objects) 是 PHP 的一个扩展,定义了一系列轻量级的、通用性的、跨数据库的访问接口。

   在以前,如果你用的是MySQL数据库,要打开 php_mysql.dll 的一个扩展,然后用 PHP 提供的 MySQL 函数来访问数据库;如果你用的是 MSSQL,就打开 php_mssql.dll 的扩展,用 PHP 提供的 MSSQL 函数来访问数据库。现在,你只要打开 pdo 相应的数据库扩展(例如:在Windows 平台 PHP 5.3.5 的 php.ini 中 php_pdo_mysql.dll,php_pdo_mssql.dll),就能用 PDO 提供的各种方法来访问各种不同类型的数据库,如MySQL、Oracle、MSSQL

   PDO 是 PHP 5.1 新加入的,在 PHP 5.0 中 PDO 也能作为 PECL 的一个扩展来用,但是它不适用于 PHP 5.0 的早期版本。

   它有点类似Java框架Hibernate。


2.基本例子

employees表
employees表

<?php
/* Connect to an ODBC database using driver invocation */
$dsn 'mysql:dbname=test;host=127.0.0.1';
$user 'root';
$password 'root';

try {
    $dbh new PDO($dsn$user$password);
catch (PDOException $e{
    echo 'Connection failed: ' $e->getMessage();
}
$sth $dbh->query('SELECT  * FROM employees');//query方法用于查询
$result $sth->fetch();//获取第一行数据

print_r($result);
$result $sth->fetchAll();//获取所有数据
print_r($result);
?>


<?php
/* Connect to an ODBC database using driver invocation */
$dsn 'mysql:dbname=test;host=127.0.0.1';
$user 'root';
$password 'root';

try {
    $dbh new PDO($dsn$user$password);
catch (PDOException $e{
    echo 'Connection failed: ' $e->getMessage();
}
//插入数据,exec方法用于 INSERT,UPDATE,DELETE等操作
$count $dbh->exec("INSERT INTO employees (`id`,`fname`,`lname`,`hired`,`separated`,`job_code`,`store_id`) 
VALUES ('5','sherlock','wang','2012-01-01','2013-03-01','10','20')");

print("affected  $count rows.\n");
?>

<?php
/* Connect to an ODBC database using driver invocation */
$dsn 'mysql:dbname=test;host=127.0.0.1';
$user 'root';
$password 'root';

try {
    $dbh new PDO($dsn$user$password);
catch (PDOException $e{
    echo 'Connection failed: ' $e->getMessage();
}
$sth $dbh->prepare('SELECT  * FROM employees WHERE job_code=:job_code AND store_id=:store_id');//prepare方法用於 SELECT、INSERT、UPDATE 及 DELETE 等需要多次進行資料處理的 SQL 上
$sth->execute(array(':job_code' => 2':store_id' => '2'));
$result $sth->fetchAll();//获取所有数据
print_r($result);
$sth->execute(array(':job_code' => 12':store_id' => '7'));
$result $sth->fetchAll();//获取所有数据
print_r($result);
?>


<?php
/* Connect to an ODBC database using driver invocation */
$dsn 'mysql:dbname=test;host=127.0.0.1';
$user 'root';
$password 'root';

try {
    $dbh new PDO($dsn$user$password);
catch (PDOException $e{
    echo 'Connection failed: ' $e->getMessage();
}
$sth $dbh->prepare('SELECT  * FROM employees WHERE job_code=? AND store_id=?');//用 ? 代替
$sth->execute(array(2,'2'));//按 ? 出现的次序设置值
$result $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
$sth->execute(array(12,'7'));
$result $sth->fetchAll(PDO::FETCH_NUM);
print_r($result);
?>


详情:PDO API

没有评论:

发表评论