【发布时间】:2011-02-08 13:30:34
【问题描述】:
在这样的代码之后:
$stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($district);
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
如何查看实际执行的 SQL 语句?
(它应该类似于“SELECT District FROM City WHERE Name='Simi Valley';”)
我已经意识到,在这种简单的情况下,简单地重构查询将非常容易......但是我如何才能以一种适用于非常复杂的准备语句的通用方式访问它,以及我不这样做的情况一定已经理解了查询的预期结构等。是不是可以在语句对象上调用某些函数或方法,在绑定后返回 SQL 查询的实际文本?
【问题讨论】:
-
通常绑定是在数据库中完成的,所以你能做的最好的就是在应用层“模拟”它。你能澄清你想要做什么吗?如果您正在跟踪发送了哪些查询,为什么不从数据库端查看?
-
我实际上从未尝试过这个,所以我将它作为评论留下。查询后,您也许可以得到使用
var_dump($mysqli->info());执行的实际查询 -
好的,我试试从DB端看。