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 :

Modifier la valeur d'un champ dans une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2002
    Messages : 726
    Points : 352
    Points
    352
    Par défaut Modifier la valeur d'un champ dans une table
    bonjour
    je voulais modifier les valeurs d'un champs dans une table tarifs, ce champs est de type varchar "designation_pays".
    je parcours la table ensuite pour chaque valeur contenant cette sous chaine " -mob" deviendra ";mob"
    voici mon 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
     
    $query = 'SELECT * FROM tarif_2 ';
    $prep = $pdo->prepare($query);
    $prep->execute();
    $results = $prep->fetchAll(PDO::FETCH_ASSOC);
    foreach ($results as $row) {
        if (substr_count($row['dest'], ' -Mob') > 0) {
            $country = trim(str_replace(' -Mob', ';mob', $row['dest']));
            echo $row['dest'] . " = $country <br>";
            $query = 'UPDATE tarif_2 SET dest=:dest WHERE dest= ?';
            $prep = $pdo->prepare($query);
            $prep->bindParam(':dest', $row['dest']);
            $prep->bindParam(':dest', $country);
            $prep->execute();
        }
    }
    je reçois cette erreur
    Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters in
    cette table ne contiens pas de clé

  2. #2
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Tu fais deux fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $prep->bindParam(':dest', $row['dest']);
            $prep->bindParam(':dest', $country);
    Alors que tu n'as indiqué qu'un seul paramètre dest dans ta requête PDO .

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2002
    Messages : 726
    Points : 352
    Points
    352
    Par défaut
    bonjour,
    merci pour votre réponse oui j'ai indiqué qu'un seul dans la requête car il y a un seul champ nommé "dest"
    la condition s'applique sur le même champs
    c'est ça le probleme pour une table sans ID

  4. #4
    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
    l'erreur est claire : tu ne peux pas avoir à la fois des paramètres nommés (xxx) et non nommés (?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = 'UPDATE tarif_2 SET dest=:dest_new WHERE dest = :dest_old';
            $prep = $pdo->prepare($query);
            $prep->bindParam(':dest_old', $row['dest']);
            $prep->bindParam(':dest_new', $country);
            $prep->execute();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2002
    Messages : 726
    Points : 352
    Points
    352
    Par défaut
    merci pour vos réponse
    ok je vais prendre en considération ces paramètres nommés et non nommés.
    j'ai copié collé votre code et je reçois cette erreur :
    Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in ...
    ( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in ...
    je précise je n'ai pas de champs ID dans cette table, je crois que PDO sans ID ne fonctionne pas ?

  6. #6
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    N'est-il pas possible de faire un UPDATE (avec LIKE et REPLACE par exemple) seulement au lieu de tout sélectionner et faire un UPDATE ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE tarif_2
    SET dest = REPLACE(dest, '-Mob', ';mob')
    WHERE dest LIKE '% -Mob%';
    Le bienfait n'est jamais perdu

  7. #7
    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
    je précise je n'ai pas de champs ID dans cette table, je crois que PDO sans ID ne fonctionne pas ?
    PDO se moque des Ids, c'est une interface avec une base de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2002
    Messages : 726
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par Willy_k Voir le message
    Salut,
    N'est-il pas possible de faire un UPDATE (avec LIKE et REPLACE par exemple) seulement au lieu de tout sélectionner et faire un UPDATE ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE tarif_2
    SET dest = REPLACE(dest, '-Mob', ';mob')
    WHERE dest LIKE '% -Mob%';
    merci c'est ce que je cherchais.

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2002
    Messages : 726
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par sabotage Voir le message
    PDO se moque des Ids, c'est une interface avec une base de données.
    merci pour votre réponse au fait je suis novice en PDO, je crois qu'il se moque de tout
    car jai pas pu appliquer la requete sur un même champs qui sera dans set et la clause where.

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

Discussions similaires

  1. Modifier la valeur d'un champs dans une table mysql en fonction du temps.
    Par VaSss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2010, 12h30
  2. Réponses: 1
    Dernier message: 31/08/2009, 23h48
  3. Réponses: 2
    Dernier message: 29/06/2008, 20h16
  4. Modifier les valeurs de certains champs d'une table
    Par Xorbane dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/10/2007, 23h10
  5. Réponses: 4
    Dernier message: 07/08/2006, 17h19

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