【问题标题】:Why PDO connection sowing "SQLSTATE[HY000]: General error"?为什么 PDO 连接播“SQLSTATE[HY000]: General error”?
【发布时间】:2015-12-08 15:15:50
【问题描述】:

我正在使用 pdo 连接。我正在尝试运行删除查询,但它在浏览器中显示此消息

     *SQLSTATE[HY000]: General error*

这是我的查询:

      $user_id = $_POST['user_id'];  $result = query($conn, "DELETE  FROM user WHERE user_id = '$user_id'");

我不知道为什么会这样。任何形式的帮助将不胜感激。谢谢

【问题讨论】:

标签: php mysql pdo


【解决方案1】:

我认为PHP中不存在query()函数..应该是mysql_query或mysqli_query

使用 Mysql 查询不好,因为它在更新版本的 php 中被贬值了

$result = mysqli_query($conn, "DELETE  FROM user WHERE user_id = '$user_id'");

//So using mysqli :) 

$result = mysqli_query($conn, "DELETE  FROM user WHERE user_id = '$user_id'");

【讨论】:

    【解决方案2】:

    每 MySQL 5.5.35 源代码,sql/sql_prepare.cc

    bool
    Reprepare_observer::report_error(THD *thd)
    {
      /*
        This 'error' is purely internal to the server:
        - No exception handler is invoked,
        - No condition is added in the condition area (warn_list).
        The diagnostics area is set to an error status to enforce
        that this thread execution stops and returns to the caller,
        backtracking all the way to Prepared_statement::execute_loop().
      */
      thd->stmt_da->set_error_status(thd, ER_NEED_REPREPARE,
                                     ER(ER_NEED_REPREPARE), "HY000");
      m_invalidated= TRUE;
    
      return TRUE;
    }
    

    当准备/执行语句的顺序错误时,您的错误(SQL 状态 HY000)似乎会发生。仔细检查我们的逻辑以确保您正确使用准备好的语句,例如在再次调用 query() 之后正确获取所有结果。

    如果您无法弄清楚,请将问题隔离为一个最小、完整且可验证的示例 (https://stackoverflow.com/help/mcve),然后在此处发布代码。

    更新:

    如果你这样做了,问题会消失吗(或者你至少会得到一个有意义的错误消息)

    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    

    在查询之前?

    【讨论】:

      猜你喜欢
      • 2012-10-10
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 2021-07-06
      相关资源
      最近更新 更多