对于mysql,我使用以下格式:
$sql = "select * from table where area_id = ? and item_id = ?";
然后准备并绑定参数等。如果查询失败,并且我记录$sql变量,那么我会得到上面的字符串,而这个字符串不是很有用。我想要的是带有中的绑定值的sql字符串。据我所知,没有简单的方法可以做到这一点,所以我想我可以这样做:
sql_log(str_replace('?', array($area_id, $item_id), $sql));
要在我的日志中得到这样的内容:
"select * from table where area_id = West and item_id = West" (spot the error!)
所以我知道我的错误是什么。但它不起作用。我明白了:
"select * from table where area_id = Array and item_id = Array"
4条答案
按热度按时间qnakjoqk1#
试试这个:
或
如果数据库中的字段是整数%s,则必须将其替换为%d,并且不要使用引号
ppcbkaq52#
拉威尔有个漂亮的助手。
来源:str::replacearray()
envsm3lx3#
不幸的是,
mysqli
没有一个好的方法来获取查询。可以使用方法替换参数:wmtdaxz34#
使用preg\u replace\u回调函数