0

现在我已经将我的查询转换为 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 ); 

我真的不知道错误点在哪里。谢谢你的回答。

4

2 回答 2

0

在建立连接之前,您不能使用 mysql_real_escape_string()。您可能必须编写自己的转义方法。有关详细信息,请参阅此处的注释部分。

于 2012-08-02T16:38:27.293 回答
0

我认为你的参数 1 和 2 是错误的。

尝试:

$sql = "这是我的字符串参数你找到了吗?\n";

echo vsprintf(str_replace("params","%s",$sql), "BOO!");

输出

 here is my string BOO! did you find it?

I'd suggest just not doing the str_replace... ?

于 2012-08-02T17:01:31.693 回答