special - php escape string




différence entre mysqli_real_escape_string() et mysql_real_escape_string() (2)

En plus de ce que Quentin a dit:

Les deux types de sortie sont les mêmes.

mysql_real_escape_string

$ link est obligatoire pour mysqli_real_escape_string.

mysql_real_escape_string

$ link est optionnel

Si l'identifiant de lien n'est pas spécifié, le dernier lien ouvert par mysql_connect () est utilisé. Sinon, essayez d'en ouvrir une sans paramètres.

J'ai lu d'innombrables articles mais je me demandais si quelqu'un pouvait expliquer la différence en termes simples? Je sais qu'ils protègent tous les deux contre l'injection sql et sont pour la sécurité. mais si j'utilise mysqli pour lancer une requête, ou la façon démodée de my_sql_query, est-ce que cela a vraiment de l'importance? ne sont-ils pas les deux wrappers de toute façon pour la fonction sql?

pourquoi le code ci-dessous ne fonctionne pas?

 $test="hello, 'there";
$db->real_escape_string($test);

$db->query("INSERT INTO users (first_name) VALUES ('$test')");

Ils prennent en compte le charset actuel de la connexion, ils doivent donc pouvoir accéder à la connexion, vous devez donc utiliser celui de la bibliothèque avec laquelle vous avez ouvert la connexion.

Ils devraient généralement être évités en faveur des déclarations préparées cependant.

pourquoi le code ci-dessous ne fonctionne pas?

$test="hello, 'there";
$db->query("INSERT INTO users (first_name) VALUES ('$test')", 

mysqli_real_escape_string($test));

Vous pouvez avoir d'autres problèmes mais:

  1. Vous échappez à $test après l' avoir injecté dans le SQL
  2. Vous ne faites rien avec la valeur de retour.

Cela devrait aller avant que vous construisiez votre chaîne de SQL:

$test = mysqli_real_escape_string($link, $test);




mysqli