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

Langage PHP Discussion :

Guillemets pénibles lors de suppression


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 153
    Points : 48
    Points
    48
    Par défaut Guillemets pénibles lors de suppression
    Bonsoir à tous,

    J'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $r4=mysql_query("SELECT pseudo FROM users WHERE mort=1 AND timemort<=0");
    while ($row2 = mysql_fetch_array($r4)){
    $pseudo3=$row2['pseudo'];
    $r5=mysql_query("DELETE FROM users WHERE pseudo='".$pseudo3."'");
    Pour effacer les utilisateurs trop anciens de ma BDD.
    Or, cela ne fonctionne pas pour les utilisateurs dont le pseudo contient un guillement simple : '

    Comment faire pour contourner le souci ?

    Merci par avance,
    Antoine

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et pourquoi pas
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM users WHERE mort=1 AND timemort<=0
    ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 153
    Points : 48
    Points
    48
    Par défaut
    Sabotage, impossible car j'ai toute une liste de requêtes qui suivent Mais ça aurait été trop beau !!!

    J'ai donc testé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $r5=mysql_query("DELETE FROM users WHERE pseudo=".$pseudo3.",mysql_real_escape_string($pseudo3)");
    Sans succès.

    Merci par avance de votre aide.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ça aurait été trop beau
    Ba non ce n'est pas trop beau, même si as d'autres traitement qui nécessitent d'être fait utilisateur par utilisateur (et encore il faut encore une fois être sur que c'est pertinent), rien ne t'empêche d'au moins faire le DELETE d'un seul coup.

    Pour le mysql_real_escape_string(), je ne sais pas d'ou tu nous a sorti cette idée de le placer à la fin séparé par une virgule.
    Il est de toute façon plus simple et efficace de prendre comme référence l'id de l'utilisateur et non son pseudo.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Bah y'a peut-être pas d'id dans sa table. Si pseudo est unique il peut servir d'identifiant.

    @ingeniomatique
    Mais bon c'est certain que plutôt que de sélectionner une condition "WHERE mort=1 AND timemort<=0" pour rechercher ensuite le pseudo et pour enfin effacer les lignes correspondantes, autant effacer directement les lignes sur la condition et donc DELETE FROM users WHERE mort=1 AND timemort<=0 devrait suffire pour effacer les lignes ciblées.

    Sinon avec mysql_real_escapre_string on devrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $r5=mysql_query("DELETE FROM users WHERE pseudo='".mysql_real_escape_string($pseudo3)."'");

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 153
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup. Cela fonctionne. Une bonne astuce à garder au chaud !!!


    Non non non, je vous assure, la requête proposée avant ne me servait à rien toute seule. Car il y avait ensuite toute une liste de DELETE sur d'autres tables, qui ne contiennent pas le champ MORT ou TIMEMORT. Donc la question restait entière.

    Merci de votre aide et très bonne fin de soirée (début pour d'autres).

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/07/2009, 22h20
  2. Problème de cohérence de données lors de suppression d'une ligne
    Par Alphadjo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/06/2008, 20h07
  3. PB lors de suppression de ligne SGL Access
    Par papy75 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/02/2008, 07h33
  4. Réponses: 1
    Dernier message: 19/07/2007, 14h53
  5. [8i][DBA] probleme lors de suppression d'un user
    Par sali dans le forum Oracle
    Réponses: 4
    Dernier message: 11/02/2006, 00h40

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