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 :

Problème de Quote en PDO [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut Problème de Quote en PDO
    Bonjour à tous,

    Je modifie mes vieux scripts php en PDO mais je suis confronté à un problème de quote dans une donnée.

    $ligneMaster->rue contient un quote exemple : rue de l'Eglise

    Comment fait-on en PDO ?

    Merci pour l'aide

    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
    // On prends toutes les lignes du master
    $req = $master->query("SELECT * FROM gghf_table");
     
    // On boucle sur toute la table
    while( $ligneMaster = $req->fetch(PDO::FETCH_OBJ) )
    { 
     	// On recherche sur le slave la ligne d'id correspondant
    $req2 = $slave->query("SELECT * FROM gghf_table WHERE id = '$ligneMaster->id' ");
     
     
    	if( ! $req2->fetch(PDO::FETCH_OBJ)) { // Si on en trouve aucune; équivalent du "NOT EXISTS" 
     
     		// Alors on insert dans le slave les données de la ligne du master
    		$req3 = $slave->exec("INSERT INTO gghf_table (id,nom, prenom, rue, code, postal, pays, email,newid,updata) VALUES ('$ligneMaster->id' , '$ligneMaster->nom' , '$ligneMaster->prenom', '$ligneMaster->rue', '$ligneMaster->code', '$ligneMaster->postal','$ligneMaster->pays', '$ligneMaster->email', '$ligneMaster->newid' , '$ligneMaster->updata' )");
    	  }
    }
    $req->closeCursor();

  2. #2
    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
    Par défaut
    Avec une requête préparée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sth_insert_slave = $slave->prepare("INSERT IGNORE INTO gghf_table (id,nom, prenom, rue, code, postal, pays, email, newid, updata) VALUES (:id, :nom, :prenom, :rue, :code, :postal, :pays, :email, :newid, :updata)");
     
    $req = $master->query("SELECT id, nom, prenom, rue, code, postal, pays, email, newid, updata FROM gghf_table");
     
    while( $ligneMaster = $req->fetch(PDO::FETCH_ASSOC) )
    { 
     	$req2 = $slave->execute($ligneMaster);
    }
    En utilisant "IGNORE" tu peux t'epargner la vérification de l'existance de la ligne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Salut Sabotage et merci pour ton aide.

    Par contre j'ai une erreur de type:
    Call to undefined method PDO::execute()
    la ligne concernée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2 = $slave->execute($ligneMaster);
    L'erreur ne vient-elle pas du fait de la requête $slave->query(...) ?

  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
    Par défaut
    Je n'ai pas mis la bonne variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2 = $sth_insert_slace->execute($ligneMaster);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. [Système] Problème de quote
    Par mikebranque dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2006, 17h38
  2. Problème de quote avec XPath
    Par fadjerx dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/03/2006, 14h45
  3. [JS] Problème de quotes pour enregistrer un formulaire.
    Par polnioumane dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 24/10/2005, 17h04
  4. Problème de quotes sous PostGre
    Par Philhz dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/07/2004, 13h03
  5. Problème de quote
    Par kennini dans le forum ASP
    Réponses: 4
    Dernier message: 20/11/2003, 09h40

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