Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible d'utiliser mysql_real_escape_string

Premier point :Si vous obtenez une erreur de mysql_real_escape_string() , c'est parce que vous appelez la fonction avant d'être connecté à la base de données.

Il semble que vous vous connectiez à la base de données juste avant d'exécuter une requête. Donc, tout ce que vous faites avant d'appeler votre mm_mysqlquery() la fonction n'aura pas de connexion.

Le mysql_real_escape_string() La fonction a besoin d'une connexion directe à la base de données, afin qu'elle puisse faire le bon type d'échappement en ce qui concerne le jeu de caractères de la connexion. Vous devez donc vous connecter avant vous vous échappez.

Il est préférable de le faire de toute façon, car si vous effectuez plusieurs requêtes au cours d'une seule requête PHP, il est moins coûteux de se connecter une fois et utilisez la même connexion pour toutes vos requêtes.

Deuxièmement, veuillez ne pas accepter les suggestions d'utilisation de addslashes() -- il ne fait pas la même chose que mysql_real_escape_string() . Les deux ne sont pas interchangeables. Vous devriez prendre l'habitude d'utiliser mysql_real_escape_string() .

Troisièmement, votre sani() fonction montre une idée fausse commune.

function sani($string){     
  $string = strip_tags($string); 
  $string = htmlspecialchars($string); 
  $string = trim(rtrim(ltrim($string))); 
  $string = mysql_real_escape_string($string);
  return $string;
}

L'idée fausse courante est que vous avez besoin de toutes ces fonctions pour sécuriser une chaîne dans une instruction SQL. Vous ne le faites pas. Seulement mysql_real_escape_string() est nécessaire. Toutes les autres fonctions de cet exemple ne font rien pour se protéger contre l'injection SQL.

Ces fonctions sont utiles si vous affichez une chaîne dans une présentation HTML et que vous souhaitez réduire le risque d'attaques XSS, mais alors mysql_real_escape_string() n'est pas pertinent.

Utilisez chaque type de méthode de désinfection dans son contexte approprié.