有没有办法打印mysqli-> execute()所做的实际查询?

0pl*_*us1 9 php mysqli

我有一个复杂的查询,执行如下:

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);
    }
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

awg*_*wgy 9

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


wim*_*vds 5

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

如果需要,请参阅MySQL文档以获取更多信息.