Is there any way to print the actual query that my

2019-01-12 09:22发布

I have a complex query that gets executed like this:

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);
    }

This thing is failing without any error, it simply doesn't update the database. Since there is a ton of data that gets treated before this thing I would like to know if there is any way to show the actual query that mysqli is executing in order to understand where the problem is.

Thank you.

标签: php mysqli
4条回答
欢心
2楼-- · 2019-01-12 09:40

You could turn on logging on the MySQL DB itself, ie. add a log=logfile line to my.ini.

Refer to the MySQL documentation for more information if needed.

查看更多
乱世女痞
3楼-- · 2019-01-12 09:41

Here's a tool I found that may help MySQLi Prepare Statement checker

查看更多
够拽才男人
4楼-- · 2019-01-12 09:45

If your statement is failing, you should check $stmt->error (as opposed to $dbi->error). As far as getting the actual text of the query: it's not possible. When using prepared statements, the library is using a special protocol that doesn't generate an actual query string for each ->execute() call.

查看更多
我命由我不由天
5楼-- · 2019-01-12 09:58

Based on the PHP mysql website there is no actual way of doing it. But you may try this function as it gives you errors in your query.

查看更多
登录 后发表回答