Maintenant j'ai converti ma requête au format PDO. Mais je dois implémenter la requête avec l'ancien format pour peu de temps la prochaine fois. Le code est comme ceci:Pourquoi mysql real_escape_string vsprintf ne fonctionne pas
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);
}
et exécuter la fonction est:
$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();
et sortie ont erreur avec une valeur null
. Je pense que le problème est dans ce code:
return vsprintf(str_replace("params","%s",$sql), $array_param);
Je ne sais pas vraiment où est le point d'erreur. Merci pour votre réponse.
Veuillez ne pas utiliser les fonctions 'mysql_ *' pour écrire du nouveau code. Ils ne sont plus entretenus et la communauté a commencé [processus de dépréciation] (http://goo.gl/KJveJ). Voir la [* boîte rouge *] (http://goo.gl/GPmFd)? Au lieu de cela, vous devriez en apprendre davantage sur les [instructions préparées] (http://goo.gl/vn8zQ) et utiliser soit [PDO] (http://php.net/pdo) ou [MySQLi] (http://php.net/ mysqli). Si vous ne pouvez pas décider lequel, [cet article] (http://goo.gl/3gqF9) vous aidera. Si vous choisissez PDO, [voici un bon tutoriel] (http://goo.gl/vFWnC). – orourkek
Je réalise que vous convertissez en PDO, mais je me sens obligé de publier ce commentaire chaque fois que les fonctions 'mysql_ *' sont utilisées^ – orourkek
Puisque vous utilisez des fonctions, vous pouvez refactoriser votre code naturellement à l'intérieur des fonctions. Tant que l'entrée est placée dans le même format et que les résultats sont retournés dans le même format, vous n'avez pas besoin de changer d'autre code. –