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

パラメータ1と2の使い方が間違っていると思います。

試す:

$ sql = "これが私の文字列パラメータです。見つけましたか?\ n";

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

出力

 here is my string BOO! did you find it?

str_replaceを実行しないことをお勧めします...?

于 2012-08-02T17:01:31.693 に答える
0

接続が確立されるまで mysql_real_escape_string() を使用することはできません。独自のエスケープ メソッドを作成する必要がある場合があります。詳しくはこちらの備考欄をご覧ください。

于 2012-08-02T16:38:27.293 に答える