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 :

SELECT puis UPDATE PHP / MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut SELECT puis UPDATE PHP / MySQL
    Bonjour,

    J'ai un soucis concernant une manipulation. Je souhaiterais enchainer un update après un select, mais ça ne fonctionne pas car le update s'applique a toutes les entrées de la base ( alors qu'il ne devrait s'appliquer que sur 3 entrées aléatoires ), voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    // connexion à la base
    $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
    // sélection de la base
    mysql_select_db('magecolonie',$db) or die('Erreur de selection '.mysql_error());
    $res = "START TRANSACTION;
    SELECT * FROM colon ORDER BY rand() LIMIT 3 FOR UPDATE;
    UPDATE colon SET etat_colon='mort';
    COMMIT";
    ?>
    <table border='1'>
    <tr>
    <td>ID</td>
    <td>NOM</td>
    <td>PRENOM</td>
    <td>AGE</td>
    <td>FORCE</td>
    <td>INTELLIGENCE</td>
    <td>MORAL</td>
    <td>CHEVEUX</td>
    <td>PEAU</td>
    <td>YEUX</td>
    <td>ETAT</td>
    <td>SEXE</td>
    </tr>
    <?php
    while ($rs = mysql_fetch_array($res)){
    ?>
    <tr>
    <td><?php echo $rs['id_colon']; ?></td>
    <td><?php echo $rs['nom_colon']; ?></td>
    <td><?php echo $rs['prenom_colon']; ?></td>
    <td><?php echo $rs['age_colon']; ?></td>
    <td><?php echo $rs['force_colon']; ?></td>
    <td><?php echo $rs['intelligence_colon']; ?></td>
    <td><?php echo $rs['moral_colon']; ?></td>
    <td><?php echo $rs['cheveux_colon']; ?></td>
    <td><?php echo $rs['peau_colon']; ?></td>
    <td><?php echo $rs['yeux_colon']; ?></td>
    <td><?php echo $rs['etat_colon']; ?></td>
    <td><?php echo $rs['sexe_colon']; ?></td>
    </tr>
    <?php
    }
    ?>
    </table>
    <?php
    mysql_close(); // on ferme la connexion
    ?>

    Merci par avance pour votre aide précieuse car là e sèche complètement.

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 322
    Par défaut
    Bonjour,

    ce code sql ici n'est janais executé il manque un mysql_query

    avec les transactions on utilise pdo
    AUTOCOMMIT a 0 ?

    sinon une requete de ce type fonctionne
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE colon SET etat_colon='mort' WHERE id IN ( SELECT id FROM colon ORDER BY rand() LIMIT 3 );

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut
    Bonjour,

    Je te remercie papaJoker pour le temps accordé, grâce a toi mon problème est résolu !

    J'ai a présent l'erreur suivante :
    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
    avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
           // connexion à la base
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
        mysql_select_db('magecolonie',$db)  or die('Erreur de selection '.mysql_error());
     
    $res = "UPDATE colon SET etat_colon='mort' WHERE id IN ( SELECT id FROM colon ORDER BY rand() LIMIT 3 );";
    mysql_query($res) or die('Erreur SQL !'.$res.'<br>'.mysql_error());
     
    ?>

    J'en profite pour apporter ma modeste contribution de débutant, en fait pour résoudre cette erreur il suffit d'utiliser cette équivalence :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM email_queue where id in (select id from email_queue LIMIT 0,200)
    mais plutôt
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM email_queue WHERE id IN (SELECT * FROM (SELECT id FROM email_queue LIMIT 0,200) AS temp)
    Bonne soirée a tous !

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

Discussions similaires

  1. Update php mysql
    Par cheramaetam dans le forum Débutez
    Réponses: 0
    Dernier message: 01/10/2013, 09h27
  2. SELECT puis UPDATE du SELECT en une requete
    Par johnson95 dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2010, 14h16
  3. [SGBD] [PHP/MySQL] pb d'UPDATE dans la bdd
    Par sagitarium dans le forum Requêtes
    Réponses: 7
    Dernier message: 19/05/2006, 17h25
  4. UPDATE * SET php/mysql
    Par Invité dans le forum Requêtes
    Réponses: 13
    Dernier message: 28/03/2006, 11h47
  5. multi update avec php/ mysql
    Par arnoweb dans le forum Administration
    Réponses: 1
    Dernier message: 17/11/2005, 22h10

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