如果我PDO::exec()
查询,它就会起作用。但是,当我尝试先 PDO::prepare()
然后 PDO::execute()
时,它不会 工作。为什么?
例如,这按预期工作:
$db->exec($string);
但事实并非如此:
$stmt = $db->prepare($string);
$stmt->execute();
没有抛出任何错误,并且 $db->errorInfo
显示全零,表示成功。
这对我来说绝对是零。
编辑上下文:
注意,newDB()
只是一个使用我需要的设置启动数据库的函数。
当我运行以下命令时,它按预期工作:
$db = newDB();
if (!$error) {
if (isset($id)) {
try {
$db->exec('UPDATE Events SET Title = "WHY" , Date = "2012-11-01 00:00:00", Place = "no", Description = "no", UDate = now() WHERE Id = "12"');
} catch(PDOException $e) {
$error = 1;
}
}
}
$db = null;
但是,这并没有,我也不知道为什么:
$db = newDB();
if (!$error) {
if (isset($id)) {
try {
$stmt = $db->prepare('UPDATE Events SET Title = "WHY" , Date = "2012-11-01 00:00:00", Place = "no", Description = "no", UDate = now() WHERE Id = "12"');
$stmt->execute();
} catch(PDOException $e){
$error = 1;
}
}
}
$db = null;
最佳答案
您是否设置了异常(exception)模式?
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
关于php - 在PDO中,我可以exec()一个字符串,但不能prepare()然后execute()它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380195/