我刚刚将所有代码从旧的 mysql 驱动程序更改为 PDO。
到目前为止,我发现很多基本功能都不存在!前任。不等同于mysql_num_row
..等等(但这不是这篇文章的重点:/)
通常使用 mysql 驱动程序,我会这样做:
$result = mysql_query($query);
if(!$result){
displayError(mysql_error());
}
你如何使用 PDO 做类似的事情?
看看这里的文档有 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()
利用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();
}
?>