使用PDO而不是mysql_ *

时间:2012-12-23 16:07:42

标签: php mysql pdo

我更改了以下代码:

mysql_connect('localhost','username','password');
mysql_select_db('pl') or die( "Unable to select database"); 

PDO('mysql:host=localhost;dbname=pl;charset=UTF-8', 'username', 'password');

是正确的还是我必须将它传递给变量(在PDO教程中它被传递给变量db;它的目的是什么?http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

2 个答案:

答案 0 :(得分:6)

修改您的代码:

PDO('mysql:host=localhost;dbname=pl;charset=UTF-8', 'username', 'password');

要:

$Connection = new PDO('mysql:host=localhost;dbname=pl;charset=UTF-8', 'username', 'password');

,您的基本查询结构将围绕您的$Connection变量。示例:

$Query = $Connection->query("LIST TABLES");
$Results = $Query->fetchAll();

有点像:

$Query = mysql_query("LIST TABLES");
$Results = mysql_fetch_array($Query);

阅读这些手册:

Construct A connection (Like mysql_connect/mysql_select_db)

PDO Query (Like mysql_query();

Prepared Statements

Execute Prepared Statements

PDO FetchAll (like mysql_fetch_array)

Entire PDO Manual

答案 1 :(得分:1)

这样更好,因为如果出现问题可以捕获异常(所以,我被告知)

try {
    $conn = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'test', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}
显然,你需要改变mydb,root和test。

现在,唯一剩下的就是在你问的时候打电话给$conn

请记住, 捕获异常有点像sql连接的or die(mysql_error());部分。但是,这个会以某种方式执行,任何错误都不会显示整个文件位置,这可能是一个安全威胁。

另外,我建议你看一下这些教程,以便更多地学习:

  1. PHP Database Access: Are You Doing It Correctly?
  2. PDO Tutorial for MySQL Developers
相关问题