【发布时间】:2018-05-22 14:39:38
【问题描述】:
我知道这个问题已经问过很多次了,但没有一个适合我的答案。
我的 PDO 只是没有抛出任何错误......或者在我之前发现了错误。
我对php很陌生,我讨厌不理解简单的事情。
这是我的初始化代码
$pdo = new PDO("mysql:host=" . $db['host'] . ";dbname=" . $db['dbname'], $db['user'], $db['pass']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
还有一个示例,例如,我插入具有唯一性约束的重复行(但对于未知行或任何 pdo 异常都有同样的问题......)
$columnString = "....";
$valueString = "....";
$sql = "INSERT INTO " . $table . " (" . $columnString . ") VALUES (" . $valueString . ")";
try {
$stmt = $this->pdo->prepare($sql);
foreach($request_data as $key => $value){
$stmt->bindValue(':' . $key,$request_data[$key]);
}
$stmt->execute();
} catch (PDOException $e) {
return null;
}
当然,这个代码在没有出现数据库问题的情况下运行良好。
我正在使用 Slim 3 框架和 php7。 php5也有同样的问题。
它与框架有关吗?还有其他配置吗?为什么没有捕捉到该死的异常?
【问题讨论】:
-
我觉得应该是:
catch(\PDOException $e){...}(如果你还没有导入和别名的话) -
哦!就是这个。是因为我的文件被命名空间了吗?
-
当您发现错误时除了返回 null 之外,您没有做任何事情吗?您根本没有显示错误。
-
哦,这是为了举例。当然,我正在正确处理错误。