php - 在PDO中,我可以exec()一个字符串,但不能prepare()然后execute()它

标签 php pdo exec prepare

如果我PDO::exec()查询,它就会起作用。但是,当我尝试先 PDO::prepare() 然后 PDO::execute() 时,它不会 工作。为什么?

例如,这按预期工作:

$db->exec($string);

但事实并非如此:

$stmt = $db->prepare($string);
$stmt->execute();

没有抛出任何错误,并且 $db->e​​rrorInfo 显示全零,表示成功。

这对我来说绝对是零。

编辑上下文:

注意,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/

相关文章:

c - 如何使用 C 程序在没有 root 访问权限的情况下挂载文件系统?

c - execvp() 不让我

php - 使用多个连接连接查询字符串

php - Javascript 字符串长度不同于 PHP mb_strlen(在 textarea 行,换行符)

PHP - 从数据库加载/删除是否使用静态方法?

php - 如何在 php 中删除具有复合(多列)主键的记录

php - PDO 与 bindValue 绑定(bind)不起作用

javascript - 将 php 数组传递给 json 文件 (PHP ->Json->JS)

php - 在PDO mysql连接中,pdo查询输出对于mysql null结果集来说什么都没有

PHP 可执行文件将在命令行中运行,但不能在浏览器中运行