我刚刚将所有代码从旧的mysql驱动程序更改为PDO。
到目前为止,我发现很多基本功能都不存在!防爆。不等同于mysql_num_row
..等等(但这不是这篇文章的重点:/)
通常使用mysql驱动程序,我会这样做:
$result = mysql_query($query);
if(!$result){
displayError(mysql_error());
}
你如何使用PDO做类似的事情?
答案 0 :(得分:3)
看看documentation here有3种模式:
PDO::ERRMODE_SILENT
(默认)PDO::ERRMODE_WARNING
PDO::ERRMODE_EXCEPTION
我建议您启用last,这会导致错误时抛出异常:
$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();
}
单独注释 - PDO中的mysql_num_row
:
$sql = "SELECT count(*) FROM `table` WHERE x = y";
$result = $con->prepare($sql);
$result->execute();
$number_of_rows = $result->fetchColumn()
答案 1 :(得分: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();
}
?>