我想将预处理语句中使用的占位符替换为数组元素。
假设我有这个sql字符串:
SELECT * FROM table WHERE col1 = ? AND col2 = ?
这样的数组:
$array = array(0=>'value1', 1=>'value2')
我的输出应为:
SELECT * FROM table WHERE col1 = value1 AND col2 = value2
我读过可以使用数组作为PHP函数str_replace的参数,所以到目前为止我的尝试是:
function debugQuery($sql,$param){
return $ret = str_replace('?', $param, $sql);
}
此函数代替我想要的输出返回:
SELECT * FROM table WHERE col1 = Array AND col2 = Array
我想我错过了什么......
答案 0 :(得分:0)
您的代码是(您可以删除mysql_real_escape_string
,但这可以从sql-inj获得安全保护):
<?php
$sql = "SELECT * FROM table WHERE col1 = ? AND col2 = ?";
$array = array(0 => "TEST", 1 => "TEST2");
foreach ($array as $value)
$sql = preg_replace("#\?#", "'" . mysql_real_escape_string($value) . "'", $sql, 1);
echo $sql;