0

我更改了以下代码:

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

4

2 回答 2

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);

阅读这些手册:

构造一个连接(如 mysql_connect/mysql_select_db)

PDO 查询(如 mysql_query();

准备好的报表

执行准备好的语句

PDO FetchAll(如 mysql_fetch_array)

整个 PDO 手册

于 2012-12-23T16:15:18.700 回答
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 和测试。

现在,唯一剩下的就是$conn在您查询时致电。

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

此外,我建议您查看这些教程以了解更多信息:

  1. PHP 数据库访问:你做对了吗?
  2. MySQL 开发人员的 PDO 教程
于 2012-12-23T16:15:58.477 回答