Nettoyer une requête SQL
hypo
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je bloque depuis 8h sur un problème d'encodage d'une requête SQL
Je dois échapper des caractères type https://www.unicodepedia.com/unicode/latin-1-supplement/85/control-0085/ qui une fois dans ma requête deviennent : … et font échouer la commande.
Le soucis c'est que l'encodage des caractères en question est aléatoire alors j'ai tenté par exemple:
Le vrais soucis c'est que PDO ne sais pas exclure ces caractères (meme avec les bindparam etc), j'ai donc aussi essayer msqli_real_escape_string mais sans succès non plus.
et la j'ai plus d'idées..
Quelqu'un a déjà eu ce cas de figure ?
Merci d'avance pour votre aide.
Je bloque depuis 8h sur un problème d'encodage d'une requête SQL
Je dois échapper des caractères type https://www.unicodepedia.com/unicode/latin-1-supplement/85/control-0085/ qui une fois dans ma requête deviennent : … et font échouer la commande.
Le soucis c'est que l'encodage des caractères en question est aléatoire alors j'ai tenté par exemple:
$encode = mb_detect_encoding($vals) $vals = mb_convert_encoding($vals, 'HTML-ENTITIES', $encode);
Le vrais soucis c'est que PDO ne sais pas exclure ces caractères (meme avec les bindparam etc), j'ai donc aussi essayer msqli_real_escape_string mais sans succès non plus.
et la j'ai plus d'idées..
Quelqu'un a déjà eu ce cas de figure ?
Merci d'avance pour votre aide.
A voir également:
- Nettoyer une requête SQL
- Nettoyer ordinateur portable lent - Guide
- Nettoyer son mac - Guide
- Nettoyer disque dur - Guide
- Nettoyer memoire iphone - Guide
- Nettoyer port usb c - Accueil - Téléphones
3 réponses
Bonjour
Quel charset as-tu défini dans la connexion à ta BDD en PDO ?
Quel est l'encodage de ta base de données et de la table en question ?
Comment as-tu écrit ton code pour exécuter cette requête ?
Quel charset as-tu défini dans la connexion à ta BDD en PDO ?
Quel est l'encodage de ta base de données et de la table en question ?
Comment as-tu écrit ton code pour exécuter cette requête ?
'mysql:host=localhost;dbname=metasbooks;charset=utf8',
sinon l'encodage c'est latin1_general_ci, et la requette pour le moment c'est:
exemple de requete complete:
sachant que j'escape les caractères en question dans un str_replace plutôt dans le code en attendant de trouver mieux.
Je vais voir pour cette histoire d'encodage dans PDO, merci.
sinon l'encodage c'est latin1_general_ci, et la requette pour le moment c'est:
$sql = 'INSERT INTO metas ('. $cols .') VALUES ('. $vals .')'; $req = $bd->prepare($sql); $req->execute();
exemple de requete complete:
'INSERT INTO metas (ean, url_image, description) VALUES ('9782035856463','https://metasbooks.fr/api/images/988fe77376df8fdd266ccc1897e4c4b5-9782035856463.jpg','Des recettes de desserts fondants et mousseux: tiramisu, cheesecakes, panna cotta…; et des pas-à-pas illustrés pour apprendre à réaliser une meringue italienne ou une meringue française. Régalez-vous!'
sachant que j'escape les caractères en question dans un str_replace plutôt dans le code en attendant de trouver mieux.
Je vais voir pour cette histoire d'encodage dans PDO, merci.
et au passage, corrige ta requête ( quitte à utiliser les requêtes préparées...autant bien le faire)
Il faudrait récupérer chaque "$vals" et les mettre dans un array
et passer cet array dans le execute
comme dans l'exemple présent ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
$sql = 'INSERT INTO metas ('. $cols .') VALUES ('. $vals .')'; $req = $bd->prepare($sql); $req->execute();
Il faudrait récupérer chaque "$vals" et les mettre dans un array
et passer cet array dans le execute
comme dans l'exemple présent ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Erreur de lien..
Ici je voulais dire : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ici je voulais dire : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs