gpt4 book ai didi

php - 如何回显 MySQLi 准备好的语句?

转载 作者:IT王子 更新时间:2023-10-29 00:00:24 26 4
gpt4 key购买 nike

我目前正在使用 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 对数据做了什么。但我想这样我可以快速查看所有数据是否存在并且在正确的位置,与手动将变量拟合到查询中相比,它会节省我一些时间 - 这可以是许多变量的痛苦。

最佳答案

我不认为你可以 - 至少不能以你希望的方式。您要么必须自己构建查询字符串并执行它(即不使用语句),要么寻找或创建支持该功能的包装器。我用的是Zend_Db ,这就是我的做法:

$id = 5;
$baz = 'shazam';
$select = $db->select()->from('bar','foo')
->where('id = ?', $id)
->where('baz = ?', $baz); // Zend_Db_Select will properly quote stuff for you
print_r($select->__toString()); // prints SELECT `bar`.`foo` FROM `bar` WHERE (id = 5) AND (baz = 'shazam')

关于php - 如何回显 MySQLi 准备好的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com