Toujours un problème d'apostrophe dans une requête

Eléphant du PHP | 112 Messages

14 févr. 2018, 22:01

Bonjour,

En butte au problème de ne pouvoir faire de requête "normalement" sur des variables comportant une apostrophe sans passer par l'artifice de traiter ma variable par la fonction replace:

Code : Tout sélectionner

$vartest=str_replace("'","''",$mavar)
qui a ses limites... L'artifice fonctionne sur les variables stockées via un import de fichier .csv, mais pas sur celles insérées via un script. Il y a mieux à faire, sûrement, mais quoi?
Merci d'avance (un grand merci...) .
Thierry

Mammouth du PHP | 2703 Messages

14 févr. 2018, 22:22


Eléphant du PHP | 112 Messages

15 févr. 2018, 11:01

Bonjour,

En fait, ça ne change rien, j'ai toujours la même différence de comportement entre les variables insérées par un import et celles insérées par un script.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 févr. 2018, 01:13

La solution données par or1 est bien celle à suivre.
Donc après il faut que tu fasses un peu de debugage, que tu lises les messages d'erreurs attentivement en essayant de comprendre ce qu'ils essayent de dire, et en dernier recours que tu nous en dises plus que "j'ai une différence de comportement" : qu'est-ce qui ne fonctionnent pas comme attendu, extrait de code qui ne marche pas, quels sont les message d'erreurs rencontrés, etc... ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 112 Messages

16 févr. 2018, 11:52

Bonjour,
et merci de m'avoir répondu.
J'ai testée msqli_real_escape_string mais elle ne fonctionne pas sur ma base. En revanche addslashes fonctionne, mais là encore uniquement sur les données insérées via un import de fichier .csv. Pour ce qui est des messages d'erreur, mysqli_error($marequete) n'en génère pas. La requête n'est tout simplement pas effectuée.
Pour être plus précis, mes scripts s'apparentent à ceux d'un processus d'achat en ligne. J'extrais des données enregistrées dans une table d'une base, les stocke en session, les complète puis les enregistre dans une autre table de la même base. Dans la table initiale, il y a des données importées via un fichier .csv, dont les apostrophes ne posent pas de problème (si traitées par str_replace("'","'',",$requete) ou addslashes au moment de leur enregistrement dans la deuxième table. En revanche avec les données qui ont été insérées dans la première table via un sript d'ajout de données, éventuellement au cours de la même session, les apostrophes posent problème. Leur enregistrement dans la deuxième table ne se fait pas (alors qu'elles apparaissent bien en session).
Est-ce bien un problème de code?

Eléphant du PHP | 112 Messages

16 févr. 2018, 13:15

Et voici, pour illustrer mes propos, l'adresse du site où se manifeste le problème: http://www.nutrizoom.fr/calculs_nutritionnels.php
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 févr. 2018, 15:38

Il faut que tu débug ton code, pas à pas, pour que tu comprennes à quel moment ça ne fonctionne pas comme prévu.
Fait un echo de ta requête SQL qui ne fonctionne pas, et teste là dans phpmyadmin.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 112 Messages

16 févr. 2018, 15:57

J'ai déjà fait tout ça... plusieurs fois, mais bon, je vais recommencer.
Merci, à +