IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

UPDATE REPLACE SUBSTR


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    Bsr,

    Je cherche à remplacer une sous-chaîne mais j'ai un message d'erreur

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE familles
    	SET 
        	obs = REPLACE
            	(obs, 
                 ' - ', 
                 ' • ')
    	WHERE 
        	obs 
            	LIKE '% - %';

    Erreur :
    #1064 - Erreur de syntaxe près de 'REPLACE(`obs`, ' - ', ' • ') FROM `obs` LIMIT 0, 25' à la ligne 1
    Je n'arrive pas à identifier le pb.
    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Et sans les blancs entre REPLACE et la ( ?

    Quelle SGBDR utilises-tu ? MySQL ?

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    'soir,

    Même si je mets le tout en 1 seul ligne sans espaces supplémentaires.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE familles SET `obs` = REPLACE(`obs`,' - ',' • ')	WHERE `obs` LIKE ' - %';

    J'ai la même erreur.
    Php 5.7 MySQL chez Infomaniak

  4. #4
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    Je suppose que c'est un pb de point-virgule qui est interprété comme une fin de requête.

    Dois falloir remplacer le code html " " mais par quoi ?

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Oui il vaut mieux éviter les espaces entre le nom de la fonction SQL et la ( car selon la config du serveur ça peut ne pas passer => https://dev.mysql.com/doc/refman/8.0...e_ignore_space

    Et si tu fais simplement :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT REPLACE(obs, ' - ', ' • ')
    FROM familles

    ?

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par augier26 Voir le message
    Je suppose que c'est un pb de point-virgule qui est interprété comme une fin de requête.

    Dois falloir remplacer le code html " " mais par quoi ?
    Non non, dans une chaîne SQL le ; n'a pas de signification particulière, tu peux les laisser tels quels.

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    Plus d'erreur, merci.

    Mais apparemment ce n'est pas la bonne requête.

    Dans ma cellule `obs` j'ai du texte genre :

    ...
    - 1. Madelaine (1448) ACHARD, Décédée le 25/02/1697
    - 2. Moyse (3) ACHARD, Né à Pragelato (10060), Italie, Décédé le 20/02/1697
    - 3. Jacques (4) ACHARD, Décédé avant 1737
    - 4. Marthe (109) ACHARD, Née vers 1677 à Pragelato (10060), Italie, Décédée après 1732
    - 5. Jean ACHARD, Né vers 1678
    - 6. Catherine (441) ACHARD, Née vers 1679, Décédée après 1732
    - 7. Marie ACHARD
    ...
    dans lequel je voudrais faire le remplacement.
    J'ai le message ci-dessous
    La sélection courante ne contient pas de colonne unique. Les grilles d'édition, les cases à cocher ainsi que les liens Éditer, Copier et Supprimer ne sont pas disponibles.

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par augier26 Voir le message
    Plus d'erreur, merci.
    Qu'as-tu fait ?

    Mais apparemment ce n'est pas la bonne requête.
    Quelle requête ? La mienne est pour tester le résultat et ne modifie pas la table, te convient-il ?

    Dans ma cellule `obs` j'ai du texte genre
    Les espaces sont des espaces insécables ?

    J'ai le message ci-dessous
    D'où vient ce message ? Ce n'est pas un message SQL.

  9. #9
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    Citation Envoyé par Séb. Voir le message
    Qu'as-tu fait ?


    Quelle requête ? La mienne est pour tester le résultat et ne modifie pas la table, te convient-il ?
    J'ai utilisé ta requête qui ne renvoie pas d'erreur mais qui ne fait pas d'UPDATE, effectivement.

    Les espaces sont des espaces insécables ?
    Oui

    D'où vient ce message ? Ce n'est pas un message SQL.
    C'est le message suit à ta requête qui ne renvoie rien d'ailleurs.

    Si je remets ma requête sans espaces supplémentaires, ça bloque tjs
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE familles SET `obs`=REPLACE(`obs`,' - ',' • ') WHERE `obs` LIKE ' - %';
    #1064 - Erreur de syntaxe près de ''&nbsp)' à la ligne 1

  10. #10
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    C'est le message suit à ta requête qui ne renvoie rien d'ailleurs.
    Il faudrait exécuter la requête dans un client SQL (phpMyAdmin, MySQL Workbench, le client "mysql" en ligne de commande, etc.)
    Tant qu'un simple SELECT ne renvoit rien alors un UPDATE ne pourra pas fonctionner

    Quelle version de MySQL utilises-tu ?
    PHP 5 n'est plus maintenu depuis bientôt 3 ans

  11. #11
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    Malheureusement, je site sur lequel je travaille est tjs en MySQL 5.6 car certains scripts ne sont pas encore passés en MySQLi...

    La requête SELECT a été passée directement en ligne dans phpMyADMIN. Résultat sans erreur mais vide.

  12. #12
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par augier26 Voir le message
    La requête SELECT a été passée directement en ligne dans phpMyADMIN. Résultat sans erreur mais vide.
    Si ta colonne obs est bien valorisée, alors au pire tu devrais obtenir les valeurs inchangées, sur autant de lignes que ta table en contient.

    Essaie :

    R1 :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT obs
    FROM familles

    Inutile d'aller plus loin si R1 ne renvoie rien

    R2 :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT obs AS bef, REPLACE(obs, ' - ', ' • ') AS aft
    FROM familles

    R3 (suppression des "e", pour voir) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT obs AS bef, REPLACE(obs, 'e', '') AS aft
    FROM familles

  13. #13
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    Bjr,

    Les 3 requêtes fonctionnent et donnent le résultat attendu.
    bef
    ° Wassigny (F02), voyage avec femme et enfants (2f...
    aft
    ° Wassigny (F02), voyag avc fmm t nfants (2fs, 2 f...

  14. #14
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut UPDATE REPLACE SUBSTR
    Bon,

    Après plusieurs essais, c'est bien une histoire de caractères html qui coince.

    Si je fais
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE familles SET `obs`=REPLACE(`obs`, ' - ', ' • ')

    L'erreur est bien autour de • , cette fois.
    #1064 - Erreur de syntaxe près de '' &bull)' à la ligne 1
    alors qu'avec
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE familles SET `obs`=REPLACE(`obs`, ' - ', ' . ')

    j'obtiens
    Requête SQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE familles SET `obs`=REPLACE(`obs`, ' - ', ' . ')
    Lignes correspondantes : 458

  15. #15
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 56
    Par défaut
    Aucune amélioration si j'utilise COLLATE

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE familles SET `obs`=REPLACE(`obs`,' - ',' • ') COLLATE utf8_general_ci

  16. #16
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    #1064 - Erreur de syntaxe près de '' &bull)' à la ligne 1
    Doit y avoir un bug sur ton phpMyAdmin. Si on regarde le message d'erreur on voit que le « ;' » est mangé.

    Essaie de faire le UPDATE depuis PHP.

Discussions similaires

  1. problème avec update,replace
    Par infhaddar dans le forum Développement
    Réponses: 5
    Dernier message: 13/02/2012, 15h36
  2. [MySQL] Équivalent d'un update replace avec joker
    Par Ryan Sheckler dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/05/2007, 15h32
  3. Équivalent d'un update replace avec joker
    Par Ryan Sheckler dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/05/2007, 10h55
  4. PB avec les fonctions update/replace
    Par myers80 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/03/2007, 23h35
  5. [VB6] utiliser les fcts (replace,SubString,..) d'sql
    Par chagala dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 07/05/2006, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo