Mysql : champs tronqués après apostrophes ou tirets

Des données de type nom ou adresse entrées dans une table mysql comportent souvent des apostrophes ou des tirets.

Même si elles ont été entrées correctement dans la table, elles apparaissent tronquées lorsqu’on les rappelle à l’intérieur d’un champ input (pour modifier l’ensemble des données par exemple).

Exemple : <form method=’post’ action=’modifier.php’><input type=’text’ size=’10’ name=’Adresse’ value=' ».$row[3]. »‘>
<input type=’submit’ value=’Mettre a jour’></form>

Solution trouvée (en faisant abstraction des divers commentaires lus sur les forums qui nous font nous perdre entre problème de sécurité et commandes obsolètes).

La solution, tout convertir en html que ce soit lors de la première entrée dans la table :
$Adresse=htmlentities($Adresse, ENT_QUOTES);
Cela implique de prévoir des champs bien plus grands dans la table car le code html d’un caractère comporte bien plus de caractères que le caractère lui-même (ex : é=&eacute; prend 8 fois plus de place !)

ou au moment de la modification des données :

$query= »UPDATE $Table SET
Adresse=' ».htmlentities($Adresse, ENT_QUOTES). »‘, etc…

En plus, il semble que ce soit une bonne chose pour la sécurité informatique !
Remarque : les 3 guillemets c’est un guillemet simple suivi d’un guillemet double (l’inverse pour fermer).
Remarque encore : le ENT_QUOTES permet de convertir également les guillemets (simples ou doubles en leur code html).