1

我刚刚将所有代码从旧的 mysql 驱动程序更改为 PDO。

到目前为止,我发现很多基本功能都不存在!前任。不等同于mysql_num_row..等等(但这不是这篇文章的重点:/)

通常使用 mysql 驱动程序,我会这样做:

$result = mysql_query($query);

if(!$result){
    displayError(mysql_error());
}

你如何使用 PDO 做类似的事情?

4

2 回答 2

3

看看这里的文档有 3 种模式:

  • PDO::ERRMODE_SILENT(默认)
  • PDO::ERRMODE_WARNING
  • PDO::ERRMODE_EXCEPTION

我建议您启用最后一个,这会导致在错误时引发异常:

$pdo = new PDO($dsn,$user,$pass,$options);  // Example connection
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后将您的语句包围在一个try/catch块中

try {
    // your query here
} catch (PDOException $e) {
    echo 'Query failed: ' . $e->getMessage();
}

单独的注释 -mysql_num_row在 PDO 中:

$sql = "SELECT count(*) FROM `table` WHERE x = y"; 
$result = $con->prepare($sql); 
$result->execute(); 
$number_of_rows = $result->fetchColumn()  
于 2012-06-11T12:47:50.780 回答
1

利用try { } catch {}

<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

参考

于 2012-06-11T12:47:00.233 回答