用PHP中的数组元素替换预准备的语句占位符

时间:2016-11-23 16:19:44

标签: php mysql

我想将预处理语句中使用的占位符替换为数组元素。

假设我有这个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

我想我错过了什么......

1 个答案:

答案 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;