【问题标题】:Is there any way to print the actual query that mysqli->execute() makes?有没有办法打印 mysqli->execute() 进行的实际查询?
【发布时间】:2011-02-11 02:41:54
【问题描述】:

我有一个像这样执行的复杂查询:

if ($stmt = $dbi->prepare($pt_query)) {   
        $stmt->bind_param('ssssssssi', $snome,$scognome,$ssocieta,$svia,$slocalita,$sprovincia,$scap,$stelefono,$sfax,$uid);
        $stmt->execute();           
        echo $dbi->error;
        $stmt->close();

    } else {
        printf("Error -> %s\n", $dbi->error);
    }

这件事没有任何错误就失败了,它根本不更新数据库。由于在这件事之前有大量数据需要处理,我想知道是否有任何方法可以显示 mysqli 正在执行的实际查询,以便了解问题出在哪里。

谢谢。

【问题讨论】:

标签: php mysqli


【解决方案1】:

如果您的语句失败,您应该检查$stmt->error(而不是$dbi->error)。至于获取查询的实际文本:这是不可能的。使用预准备语句时,库使用一种特殊协议,不会为每个 ->execute() 调用生成实际查询字符串。

【讨论】:

  • 谢谢,从来不知道这个。 $stmt->错误让我朝着正确的方向前进。
【解决方案2】:

基于PHP mysql website 没有实际的方法。但是您可以尝试this function,因为它会在您的查询中出现错误。

【讨论】:

    【解决方案3】:

    您可以打开 MySQL DB 本身的日志记录,即。将 log=logfile 行添加到 my.ini。

    如果需要,请参阅MySQL documentation 了解更多信息。

    【讨论】:

      【解决方案4】:

      这是我发现的一个工具,可以帮助MySQLi Prepare Statement checker

      【讨论】:

        猜你喜欢
        • 2011-10-27
        • 2011-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多