PHP连接数据库新方法phpPDO

时间:2022-10-17 14:32:18

随着php的发展,PHP开始摒弃一些东西,mysql扩展库就是其一,当然就东西的摒弃意味着新东西的到来,那么今后连接数据库

了用mysqli扩展库之外,可以用PDO连接数据库。

   PDO(PHP Data Object) 是PHP 5 中新加入的内容,在PHP5.1发行,在PHP5.0的PECL扩展中也可以使用。因此,PHP5.1之后不支持mysql扩展库,而是由PDO代替。PDO_MYSQL:PDO_MYSQL是PDO接口能够完成连接mysql数据库的驱动。
   PDO的配置:在Apache的安装目录中找到php.ini,去掉"extension=php_pdo.dll"前面的";"号,若要连接数据库,还需要去掉与PDO

相关的数据库扩展如:extension=php_pdo_mysql.dll  等前面的";"号,然后重启Apache服务器即可。  


   下面是利用POD连接数据库的实例:

<?php
header('content-type:text/html;charset=utf-8');
try{
$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass); //host是主机名,dbname是连接数据库的名字,
//后面两个是mysql的用户名和密码

$rows = $db->query('SELECT * FROM stu')->fetchAll(PDO::FETCH_ASSOC);//调用查询函数query(),并以关联数组的形式储存,
//PDO::FETCH_ASSOC是关联数组的形式,其他的还有 PDO::FETCH_NUM -- 数字索引数组形式 PDO::FETCH_BOTH -- 关联和索引两者数组形式都有,这是缺省的 // PDO::FETCH_OBJ -- 按照对象的形式,类似于以前的 mysql_fetch_object()
//下面是通过foreach函数依次输出查询结果
$rs = array();
foreach($rows as $row)
{
$rs[] = $row;
}
$db = null; //注销PDO对象
} catch (PDOException $e)
{ echo "Error: ".$e->getMessage();
die();
}
print_r($rs);
?>




数据库 的插入:

$inser = $db -> exec("INSERT INTO stu(name,age) VALUES ('lee',20)");


数据库的删除:

$del = $db->exec("DELETE FROM stu WHERE age=43");
 

数据库的修改:

       $del = $db->exec("UPDATE stu SET age=21 WHERE name='lee'");

上面就是一个简单的利用PDO连接数据库的示例,其实和mysql扩展库类似,很容易理解。下面是PDO中常用的方法:

PDO::query() 主要用于有记录结果返回的操作,特别是select操作。
PDO::exec()主要是针对没有结果集合返回的操作。如insert,update,delete等操作。返回影响行数。
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([intcolumn_indexnum])用于直接访问列,参数column_indexnum是该列在行中的从0开始索引值,但是,这个方法一次只能取得同一行的一列,只要执行一次,就跳到下一行。因此,用于直接访问某一列时较好用,但要遍历多列就用不上。
PDOStatement::rowcount()适用于当用query("select...")方法时,获取记录的条数。也可以用于预处理中。
PDOStatement::columncount()适用于当用query("select...")方法时,获取记录的列数。

以上就是在本人查找资料和文献后的对PDO的总结和理解,仅供参考!

(所参考博客:http://www.2cto.com/database/201410/347594.html;http://www.jb51.net/article/24434.htm)