2017-10-13 1 views
-1

Faisant suite à cette question MySQL database contains quotes encoded and unencoded and it's breaking javascriptMySQL déclaration échoue en raison de citations encodées

J'exécute cette requête MySQL:

DELETE FROM `example` WHERE `name` = ''12345'' 

Cependant, il échoue parce que la valeur de la base de données est '12345'. Il semble que les anciennes données dans la base de données ont un mélange de guillemets codés et non codés. Est-il sûr de mettre à jour tous les ' à ' dans la base de données?

+0

Pourquoi Stockez-vous des entités HTML dans votre base de données?! – deceze

+0

Merci de m'avoir signalé le problème.J'ai veillé à ce que DB ne stocke aucune entité HTML. – xylar

Répondre

1

Dans la plupart des cas (y compris le vôtre), stockez du texte sans «codage». En d'autres termes, ne stockez pas htmlentities, ne stockez pas les caractères réels, ne stockez pas les codes unicode, n'enregistrez pas les caractères réels, etc.

Faites de même pour tout ce que vous devez comparer à ce qui se trouve dans la base de données.

Vous devrez cependant échapper des chaînes lors de la création d'instructions SQL. Dans le cas contraire, vous ne pouvez pas obtenir des citations (dans le texte) à l'intérieur des citations (qui font partie de la syntaxe SQL

C'est, vous finirez avec ce SQL lors de la recherche que Irishman.

... WHERE `name` = 'O\'Brian'