当前位置: 首页 > 面试题库 >

PDO错误-PDOException”,消息为“ SQLSTATE [HY000]:常规错误” [重复]

薄伟彦
2023-03-14
问题内容

这个问题已经在这里有了答案

PDO错误:“ SQLSTATE [HY000]:常规错误”更新数据库时 (2个答案)

2年前关闭。

我收到此错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in ...

..每当我使用PDO执行此代码时:

//Select data from the topic.
$s = $dbh->prepare("SELECT * FROM forum_topics WHERE forum_id=:forum_cat_id AND topic_id=:topicid");
$s->bindParam(':forum_cat_id', $forum_cat_id);
$s->bindParam(':topicid', $topicid);
$s->execute();
$f = $s->fetch();

$s = $dbh->prepare("UPDATE forum_cats 
    SET 
        forum_last_postid = :last_post_id, forum_last_posttime = :time, 
        forum_last_userid = :userid, forum_last_username = :username, 
        forum_posts=forum_posts+1 
    WHERE forum_id = :forum_cat_id");
$s->bindParam(':last_post_id', $last_post_id);
$s->bindParam(':time', $time);
$s->bindParam(':userid', $userid);
$s->bindParam(':username', $userdata['username']);
$s->bindParam(':forum_cat_id', $forum_cat_id);
try {
    $s->execute();
}
catch(PDOException $e) {
    die($e->getMessage());
}

if (count($s->fetchAll()) == 0) {
    return 3;
}

我不知道为什么会这样。我已经检查了查询,但根本找不到任何错误。


问题答案:

这是发生了什么:

  • 您正在尝试获取UPDATE查询。您不能这样做,因为UPDATE查询不会返回值。如果您想知道该查询影响了多少行,请改用rowCount()函数。请注意,并非所有的数据库驱动程序都提供受影响的行。

  • 您正在使用未声明的变量(至少在此处发布的代码中)。这不是此特定错误的原因,但可能会导致其他错误。

  • 您没有使用从数据库中选择的数据

另外,建议在try块内进行所有PDO操作,否则可能会遇到未处理的异常。



 类似资料:
  • 问题内容: 使用PDO更新数据库时出现错误。我是PDO的新手,所以问题可能很小,我只是不明白。 关于错误的有趣的是,该命令可以正常运行,并且数据库确实得到了更新。 但是它仍然向我返回错误。 码: 错误: 错误更新内容:SQLSTATE [HY000]:一般错误 我真的不知道问题可能在哪里,因为它非常怪诞,而且我无法找到遇到相同问题的任何人。 问题答案: 您不使用fetchAll(),如 与更新或插

  • 问题内容: 我收到了这个令人讨厌的错误,尽管我知道为什么要得到它,但我终生无法找到解决方案。 查询包含占位符()。但是要添加这些LIMIT占位符,我需要使用手动方法(),因为否则引擎会将它们转换为字符串。 我没有收到无效的参数数量错误,因此所有占位符均已正确绑定(我认为)。 查询: 除最后两个LIMIT(我与之手动绑定)外,所有占位符值均位于$ criteria中。 问题答案: 您不能使用 和 。

  • 问题内容: 这是我的代码片段: 这应该给我一个错误,因为这些表甚至不存在。但是我得到的是: 数组([0] => 00000) 如何获得对该错误的更好描述,以便可以调试问题? 问题答案: 尝试以下方法: 在准备之前添加以下内容: 这将更改PDO错误报告类型,并在出现PDO错误时使其发出警告。尽管应该设置您的errorInfo,但它应该可以帮助您进行跟踪。

  • 我正在尝试运行MySQL PDO查询。我不知道为什么我会得到一个致命的错误。我查过其他帖子,但他们的答案似乎并不能解决我的。 脚本连接到数据库很好。用户名和密码是正确的,我已经在下面的脚本中删除了它们。 我的输出:

  • 我正在使用laravel auth。在注册页面中,用户需要填写姓名、电子邮件和密码才能创建帐户。稍后,用户可以编辑他的个人资料帐户,并插入更多信息,如地址、城市、邮政编码等,但创建帐户只需要它的名字、姓氏、电子邮件和密码。 我使用laravel auth使用下面的代码构建上面的逻辑,但是我在填写表单并单击“创建帐户”后收到错误: SQLSTATE[HY000]:一般错误:1364字段“facebo

  • 我已经将我的android studio更新为2.2.1,现在我在android studio的消息部分收到错误消息 错误: Java语言lang.NullPointerException(无错误消息) 这是我的android studio的屏幕截图: 帮我看看现在该怎么办。