现在我已将我的查询转换为PDO格式。但是我必须在下次使用旧格式实现查询。代码是这样的:
function mysql_Select($sql) {
$data=array();
$params=func_get_args();
$s=PreparaSQL($sql, $params);
$res = mysql_query($s);
if ($res && mysql_num_rows($res)){
while( $dt = mysql_fetch_object($res)){
$data[]=$dt;
}
return $data;
}
}
function PreparaSQL($sql, $array_param){
unset($array_param[0]);
foreach ($array_param as $k => $v){
$array_param[$k]=mysql_real_escape_string($v); }
return vsprintf( str_replace("params","%s",$sql), $array_param );
}
执行函数是:
$data=mysql_Select('SELECT concat(id," | ",wh2) as label,Id as kode,wh2 as nama,wh2 as value FROM wh011 where wh2 like %s',$_GET['where']);
echo json_encode($data);
flush();
输出有null
值的错误。我认为麻烦在于这段代码:
return vsprintf( str_replace("params","%s",$sql), $array_param );
我真的不知道错误点在哪里。 谢谢你的回答。
答案 0 :(得分:0)
在建立连接之前,不能使用mysql_real_escape_string()。您可能必须编写自己的转义方法。有关详情,请参阅备注部分here。
答案 1 :(得分:0)
我认为你的参数1和2错误。
尝试:
$ sql =“这是我的字符串params你找到了吗?\ n”;
echo vsprintf(str_replace(“params”,“%s”,$ sql),“BOO!”);
输出
here is my string BOO! did you find it?
我建议不要做str_replace ......?