PHP连接数据库:PDO、MySQL、MySQLi

在php中,连接MySQL数据库有的方法有mysql()、mysqli()和PDO。三者的区别大概就是:mysqli()是mysql()的增强扩展,支持在MySQL4.1.3及更高版本新的高级特性,mysqli扩展在php5开始加入。PDO是在php5.1之后才支持,为PHP访问数据库定义轻量级的一致接口。

 

 MySQL支持版本 PHP支持版本 其他
mysql <MySQL4.1.3 <php5
mysqli >MySQL4.1.3 >php5
PDO >php5.1 支持各种数据库,自带防sql注入。

 

由于PDO是PHP官方的扩展,而且即使数据库程序更改,也可以使用相同的函数(方法)来进行数据库操作,而且自带的prepare方法可以提供防sql注入。所以我会优先使用PDO。

使用PDO连接MySQL数据库的方式:

<?php
$dbms = 'MySQL';
$host = 'localhost';
$dbName = 'db_test';
$user = 'root';
$pwd = 'password';
$pdo = new PDO("$dbms:host=$host;dbname=$dbName",$user,$pwd);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);//禁用模拟预处理语句,防sql注入
$pdo->exec("SET NAMES 'utf8';");
?>

PDO进行数据查询的方法:

 $sql = "SELECT * FROM $form where id=?";// ?是占位符。
 $stmt = $pdo->prepare($sql);//预处理sql语句,数据和查询语句分步处理,放在sql注入。
 $exeres = $stmt->execute(array($id));//?为$id
 if ($exeres) {
     while ($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
     //print_r($row);//必要时可以先输出$row进行分析。
     $res=$row[0];
     echo $res["value"]."//".$res["echo"]."<br>";
     }
 }
 $pdo=null;//关闭PDO连接。

发表评论