我现在正在玩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();
}
Run Code Online (Sandbox Code Playgroud)
我一直在浏览这个清单(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 …
Run Code Online (Sandbox Code Playgroud) 我在第57行收到此错误: $password = str_replace($key, $value, $password, 1);
据我所知,我只传递变量.这是一些更多的背景:
$replace_count = 0;
foreach($replacables as $key => $value)
{
if($replace_count >= 2)
break;
if(strpos($password, $key) !== false)
{
$password = str_replace($key, $value, $password, 1);
$replace_count++;
}
}
Run Code Online (Sandbox Code Playgroud)