#1064 - You have an error in your SQL syntax [Résolu/Fermé]

Signaler
Messages postés
36
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
29 mars 2018
-
 Utilisateur anonyme -
Bonjour à tous et merci d'avance pour vos retours éventuels,

Que je fasse cette requête
UPDATE 
ps_product_lang
SET 
description= REPLACE(description '1111 1111 111 (0,09 cts/min)', '22 22 22 22 22 (prix d\'un appel local)');


ou

UPDATE 
ps_product_lang
SET 
description= REPLACE(description '1111 111 111 (0,09 cts/min)', '22 22 22 22 22 (prix d\'un appel local)')
WHERE description LIKE '%1111 111 111 (0,09 cts/min)%'


ou

UPDATE 
ps_product_lang
SET 
description= REPLACE(description '1111 111 111 (0,09 cts/min)', '22 22 22 22 22 (prix d\'un appel local)')
WHERE description LIKE '%1111 111 111 (0,09 cts/min)%';


J'ai ce message d'erreur :
Erreur
Requête SQL :
UPDATE
ps_product_lang
SET
description= REPLACE(description '1111 111 111 (0,09 cts/min)', '22 22 22 22 22 (prix d\'un appel local)')
WHERE description LIKE '%1111 111 111 (0,09 cts/min)%'
MySQL a répondu: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1111 1111 111 (0,09 cts/min)', '22 22 22 22 22 (prix d\'un appel local)')
WHER' at line 4

Précision je suis sur MariaDB
Merci de vos retours !

3 réponses

Messages postés
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 479
Bonjour,

Commence par faire une requête du genre :
SELECT *
FROM ps_product_lang
WHERE description LIKE '%1111 111 111 (0,09 cts/min)%' 

et dis nous ce que ça te donne

=> Requête à faire DIRECTEMENT (via phpmyadmin par exemple) dans ta BDD

Messages postés
36
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
29 mars 2018

Merci de ce retour !
Message : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.2172 secondes.)
Messages postés
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 479
Tu as un souci dans le replace je pense
description= REPLACE(description '1111 111 111 (0,09 cts/min)', '22 22 22 22 22 (prix d\'un appel local)')


A changer par
<code sql>
description= REPLACE(description , '1111 111 111 (0,09 cts/min)', '22 22 22 22 22 (prix d\'un appel local)')

</code>

Bonjour

Tu as oublié une virgule entre description et '111...'
Messages postés
36
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
29 mars 2018

Bon ! On avance ! en effet, avec la virgule j'ai un message :
0 ligne affectée. (Traitement en 0.1060 secondes.)

La sémantique est donc bonne ! je crois comprendre.

La chaîne de caractère est dans un code html et quand j'édite le champs dans la BD j'ai : 1111 1111 111 <em>(0,09 cts/min)

Je pense donc que bêtement je n'ai pas tenu compte de la syntaxe HTML !!!
Messages postés
36
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
29 mars 2018

OK on est d'accord, mais ma question était sur le code HTML qui est dans les champs de ma BDD...
Utilisateur anonyme
La question à laquelle j'ai répondu dans mon message #8 était celle posée à ton message 7, qui portait sur les définitions de deux mots.
Quant au fait que le replace ne fonctionne pas, il est évident que si la chaîne que tu lui dis de remplacer n'est pas dans ta BDD, il ne la remplace pas. D'après ce que tu montres, non seulement il y a une balise en plus, mais il y a aussi un '1'
Messages postés
36
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
29 mars 2018

OK merci de vos conseils , je vais dans cette voie et reviens vers vous pour retour...
Messages postés
36
Date d'inscription
lundi 12 décembre 2016
Statut
Membre
Dernière intervention
29 mars 2018

Voici donc la bonne requête puisqu'en effet j'avais oublié une virgule et que la sémantique de ma chaîne n'était pas bonne, car c’est bien sûr l'HTML qu'il fallait chercher et pas le résultat copier de l'HTML !
UPDATE ps_product_lang
SET description = REPLACE(description , '1111 1111 111 <em>(0,09 cts/min)' , '22 22 22 22 22 <em>(prix d\'un appel local) ' );

Un grand merci à tous ! Avec toute ma reconnaissance !
Utilisateur anonyme
De rien.

Mais laisse la sémantique tranquille, elle n'a rien à faire ici.