Dex*_*ter 22 php pass-by-reference str-replace
我根据我在其他StackOverflow问题中找到的内容,创建了一个函数来打印带有变量的prepared-statement-sql-string .
这是我的代码:
foreach($params as $idx => $param) {
if ($idx == 0) continue;
$sql = str_replace('?', "'" . $param . "'", $sql, 1);
}
printError($sql);
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到:Fatal error: Only variables can be passed by reference
对于第3行.但是当我使用时
$sql = preg_replace('/\?/', "'" . $param . "'", $sql, 1);
对于第3行,它工作正常.
知道为什么吗?
Vot*_*ple 37
最后一个参数count通过引用传递.您可以在http://us.php.net/str_replace的说明中看到这一点,其中&
变量前面有一个.
这意味着你不能在1
那里使用文字.你必须这样做:
$sql = str_replace('?', "'" . $param . "'", $sql, $count);
echo $count;
Run Code Online (Sandbox Code Playgroud)
您现在将在屏幕上显示已更换的实例数.