如何回应MySQLi准备的声明?
我目前正在玩MySQLi,试图弄清楚它是如何工作的。在我当前的项目中,我总是喜欢在编码时回显查询字符串,只是为了确保一切都是正确的,并快速调试我的代码。但。。。我如何使用准备好的MySQLi声明来做到这一点?
例:
$id = 1;
$baz = 'something';
if ($stmt = $mysqli->prepare("SELECT foo FROM bar WHERE id=? AND baz=?")) {
$stmt->bind_param('is',$id,$baz);
// how to preview this prepared query before acutally executing it?
// $stmt->execute();
}
我一直在浏览这个列表(http://www.php.net/mysqli),但没有任何运气。
编辑
好吧,如果从MySQLi内部无法做到这一点,也许我会坚持这样的事情:
function preparedQuery($sql,$params) {
for ($i=0; $i<count($params); $i++) {
$sql = preg_replace('/\?/',$params[$i],$sql,1);
}
return $sql;
}
$id = 1;
$baz = 'something';
$sql = "SELECT foo FROM bar WHERE id=? AND baz=?";
echo preparedQuery($sql,array($id,$baz));
// outputs: SELECT foo FROM bar WHERE id=1 AND baz=something
显然远非完美,因为它仍然是多余的 - 我想防止的事情 - 它也没有让我了解MySQLi正在如何处理数据。但我想通过这种方式,我可以快速查看所有数据是否存在并且位于正确的位置,与手动将变量放入查询中相比,这将为我节省一些时间 - 这对许多var来说可能是一种痛苦。