Bonjour,
J'ai un petit souci de syntaxe avec une requête MySQL que j’exécute sous PHPMyAdmin :
UPDATE `phpbb3_posts`
SET `post_text` = REPLACE(`post_text`, 'http://img4.hostingpics.net', 'https://img4.hostingpics.net');

J'ai une erreur:
#1064 - Erreur de syntaxe près de ''http&#58)' à la ligne 1

Si je comprend le code erreur, c'est mon ; qui pose soucis ... avez vous une idée pour m'aider ? J'ai essayé avec un \; mais c'est pas mieux
J'imagine que c'est tout bête Smiley lol
Modifié par Nicolas-Asso (29 Apr 2017 - 11:49)
Bonjour.

Je ne pense pas que ce soit tout bête. Moi je ne sais pas quoi vous dire à part que dans le pire des cas, vous pouvez changer de délimiteur.

Faire un :
DELIMITER &&
... votre code avec le REPLACE&&

(Vous n'avez rien avec deux esperluettes qui se suivent ?)

Quitte à remettre le point-virgule ensuite :
DELIMITER ;


Mais j'ai l'impression que lorsqu'on teste dans phpMyAdmin, ce n'est pas nécessaire.

Smiley smile
Modifié par Zelena (29 Apr 2017 - 15:09)
Re,

Merci Zelena Smiley smile

J'ai utilisé la fonction chercher et remplacer dans PHPMyAdmin !

Cette fonction a réalisé la requête suivante :
UPDATE `phpbb3_posts` SET `post_text` = REPLACE(`post_text`, 'http://img4.hostingpics.net', 'https://img4.hostingpics.net') WHERE `post_text` LIKE '%http://img4.hostingpics.net%' COLLATE utf8mb4_bin

Modifié par Nicolas-Asso (29 Apr 2017 - 22:10)
Meilleure solution
Bonjour,

Une question me turlupine (oui tout à fait), pourquoi les "simple quote" qui sont dans ton code, ne sont pas toutes identiques ?
Modérateur
Les accents graves sont utilisés en MySQL pour délimiter des identifiants (nom de tables ou colonnes). Ils ne sont pas obligatoires sauf si l'identifiant est un mot reservé ou contient des caractères spéciaux:

SELECT id, `table`, `ma#super(colonne` FROM machin

Beaucoup les utilisent tout le temps pour éviter de se poser la question / par convention.

Le single quotes délimitent une chaine de caractères.