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

Requêtes MySQL Discussion :

Remplacer une sous-chaine dans une table


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut Remplacer une sous-chaine dans une table
    Bonjour,

    J'ai des articles contenant une ou plusieurs videos youtube stockés dans une table et le code html contient une erreur sur certains articles.

    J'ai ça:
    <p><iframe class="&quot;youtube&quot;" src="https://www.youtube.com/embed/xxxxxxxx"></iframe></p>

    et je veux ça:
    <p><iframe class="youtube" src="https://www.youtube.com/embed/xxxxxxxx"></iframe></p>


    J'ai donc ecrit cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE `articles`
    SET `texte` = REPLACE(`texte`, `class="&quot;youtube&quot;"`, `class="youtube"`)
    La table se nomme 'articles' et la colonne concerné se nomme 'texte'

    J'ai testé cette commande sous phpmyadmin et j'ai l'erreur suivante:
    #1054 - Champ 'class="&quot;youtube&quot;"' inconnu dans field list

    Je l'ai testé en PHP et j'ai cette erreur:
    Erreur N°42S22 : SQLSTATE[42S22]: Column not found: 1054 Champ 'class="&quot;youtube&quot;"' inconnu dans field list

    Je pense pourtant avoir bien suivi la doc ici: https://sql.sh/fonctions/replace

    donc je ne comprends pas?

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 941
    Points : 6 791
    Points
    6 791
    Par défaut
    Tu as encadré tes chaînes de caractères entre des accents grâves, or une chaîne de caractères est délimitée soit par des simples quotes soit par des doubles quotes. C'est la raison pour laquelle MySQL croit que class="&quot;youtube&quot;" est un nom de colonne, même chose pour class="youtube". Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE `articles`
    SET `texte` = REPLACE(`texte`, 'class="&quot;youtube&quot;"', 'class="youtube"')
    Aussi, si tu utilises le safe update mode tu seras obligé d'ajouter une clause WHERE toujours vraie mettant en jeu une colonne "clef" (comme la clef primaire) pour que ta requête aboutisse.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    finalement j'ai trouvé une fonction dans phpmyadmin pour remplacer.
    Il execute la même commande et ça marche

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Points : 138
    Points
    138
    Par défaut
    j'ai ajouté ces accents grave quand j'ai commencé a avoir des problèmes.

    je viens d'essayer ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE evenements_items
    	SET texte = REPLACE(texte, 'class="&quot;youtube&quot;"', 'class="youtube"')
    ça passe en exécution sur phpmyadmin (sauf que j'ai plus rien a corriger donc pas de résultat) mais quand je fais simuler j'ai toujours l'erreur.

    bref on verra ça la prochaine fois.

    Merci pour ta réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] remplacer une sous-chaine dans une expression regulière
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2011, 16h12
  2. Réponses: 4
    Dernier message: 09/03/2008, 16h36
  3. Rechercher une sous chaine dans une chaine
    Par annedjomo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/02/2005, 11h36
  4. Rechercher une sous chaine dans une chaine
    Par Oluha dans le forum ASP
    Réponses: 4
    Dernier message: 03/02/2005, 15h39
  5. Extraction de sous-chaine dans une chaine
    Par ma2th dans le forum C
    Réponses: 7
    Dernier message: 07/05/2004, 13h42

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