Comment insérer des caractères spéciaux dans une base de données?
Quelqu'un peut me dire comment faire pour insérer des caractères spéciaux dans une base de données MySQL? J'ai fait un script PHP qui vise à insérer quelques mots dans une base de données, même si le mot contient un ' alors il ne sera pas inséré.
Je peux insérer les caractères spéciaux fine lors de l'utilisation de PHPmyAdmin, mais ça ne fonctionne pas lors de l'insertion via PHP. Se pourrait-il que PHP est en train de changer les caractères spéciaux en quelque chose d'autre? Si oui, est-il un moyen de les faire insérer correctement?
source d'informationauteur Joey Morani
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez les données stockées dans le
$input_data
Êtes-vous échapper? Essayez le mysql_real_escape_string() et la fonction de traiter les caractères spéciaux.
utilisation mysql_real_escape_string
Donc, ce n'est mysql_real_escape_string faire?
Cette bibliothèque PHP de la fonction ajoute des barres obliques inverses pour les caractères suivants: \n, \r, \, \x00, \x1a, " et “. L'important, c'est que les guillemets simples et doubles sont échappés, parce que ce sont les personnages les plus susceptibles d'ouvrir des failles.
Veuillez vous informer à propos de sql_injection. Vous pouvez utiliser cette lien comme un début
Vous sont probablement les coller directement dans une requête. Istead il le faut "échapper", à l'aide de appriopriate fonction - mysql_real_escape_stringmysqli_real_escape_string ou PDO::quote en fonction de l'extension que vous êtes en utilisant.
Vous êtes le plus susceptible de s'échapper de la chaîne SQL, similaires à:
Vous avez besoin d'échapper les guillemets, comme suit:
mysql_real_escape_string()
gère cela pour vous.Noter que comme d'autres l'ont souligné mysql_real_escape_string() permettra de résoudre le problème (addslashes), cependant vous devriez toujours utiliser mysql_real_escape_string() pour des raisons de sécurité - envisager:
Que si le navigateur envoie
La requête devient:
c'est à dire les vérifications de sécurité sont complètement ignorés.
C.
Probablement "
mysql_real_escape_string()
" va travailler pour uUtiliser ceci:
htmlentities($_POST['field']);
Assez. Ce pour les caractères spéciaux:
Utiliser pour
CI htmlentities($this->input->post('control_name'));
Par Exemple:
$parent_category_name = Vêtements pour Hommes
Considérons ici la requête SQL
Erreur:
Essayer de mettre en œuvre:
La méthode ci-dessus fonctionne sur OpenCart cadre. Trouvez votre cadre & de mettre en œuvre OU
mysql_real_escape_string()
Core PHPCela va devenir les Hommes de l\'Habillement-je.e, Dans mon cas
De sorte que vous aurez l'image claire de la requête par la mise en œuvre de escape() comme