如何进行数据库连接,将mysql转换为PDO


How to make a database connection converting mysql to PDO?

我正在尝试将我所有的mysql代码转换为PDO。我尝试转换为PDO的第一件事是我的数据库连接。有人能帮我走正确的路吗?。。。。

以下是我在mysql:中的数据库连接

  $host = "localhost"; 
$user = "root"; 
$password = "root";
$db = "blog";
$bd = mysql_connect($host, $user, $password) or die("Opps something wrong...");
mysql_select_db($db, $bd) or die("Opps something wrong...");

有一个PDO标签wiki,您可以在其中向拥有PDO真实经验的人学习正确的方法(以及许多其他有用的东西(。

$dsn = "mysql:host=$host;dbname=$db;charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,$username,$password, $opt);

与所有其他代码不同,这些代码对处理连接错误毫无用处(因为它们在实际连接之后设置了异常模式(,它将

  • 使PHP在连接错误时抛出异常
  • 不会通过回显错误向活动服务器上的潜在攻击者透露敏感信息
  • 为您提供不可或缺的堆栈跟踪
  • 在正确的位置设置连接编码

与你的旧代码不同,它不会随着无用的消息而消亡,但它会要么

  • 在屏幕上显示有用的错误消息
  • die记录了有用的错误消息,屏幕空白
  • 记录有用错误消息的骰子,显示常规错误页面
  • 根本不会死,而是用指定的处理程序函数优雅地处理

取决于所选的设置。

看看PHP手册的PDO页面,尤其是"连接和连接管理"部分:http://www.php.net/manual/en/pdo.connections.php

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

或者。。。使用Captain Common Sense的方法:(

带有错误处理的连接。。

try {
    $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}
$conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);

try {
    $conn = new PDO('mysql:host=localhost;dbname=blog', $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

更多详细信息点击此处

您看过手册吗?

$dbh = new PDO('mysql:host=localhost;dbname=yourdbname', 'youruser', 'yourpassword');