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 :

INSERT INTO entre 2 serveurs [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Points : 52
    Points
    52
    Par défaut INSERT INTO entre 2 serveurs
    Bonjour,

    Je tente de transférer des données d'une table x sur le serveur x à la table y sur le seveur y.

    Voici le code que j'utilise:

    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
     
     
    // Déclaration d'une variable date servant a chercher la table du jour
    $date=date("Ymd");
    $heure = "_00";
    $date = $date.$heure;
     
    // Appel de la fonction de connexion au serveur 1
    $sessionMySQL1 = connectionMysql1();
     
    // Appel de la fonction de connexion au serveur 2
    $sessionMySQL2 = connectionMysql2();
     
    // Selection des données sur serveur y à être insérées
    $req = "SELECT mac, ubr, no_civique, no_civique2, app, rue, ville, date_installation FROM docsis_stats.f".$date." WHERE mta = 1 ";
     
    $result = mysql_query($req, $sessionMySQL1) or die ('Erreur : '.mysql_error() );
     
     
    while ($row=mysql_fetch_assoc($result)) {
     
    $insert = "INSERT INTO Rapports.adresses (mac, ubr, no_civique, no_civique2, app, rue, ville, date_installation) VALUES ('$row[mac]', '$row[ubr]', '$row[no_civique]',  '$row[no_civique2]','$row[app]', '$row[rue]', '$row[ville]', '$row[date_installation]');";
     
    //Insertion des données du serveur y au serveur x
    mysql_query($insert, $sessionMySQL2);
     
    }
    Tout fonctionne très bien, par contre lorsque je fais un listing du nombre de résultats que je suis sensé retrouver dans mon INSERT le serveur y me dit que je vais en avoir 95646 alors que lorsque je vérifie sur le serveur y après le INSERT j'en ai que 93902...

    J'ai beau chercher mais je ne trouve pas le problème... mes tables de départ et d'arrivée sont identiques.

    Une idée du problème?

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    rajoute un appel à "mysql_error()" lors de l'insertion pour voir s'il y a une erreur

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'HOTEL-DE-VILLE', 'TROIS-RIVIERES', '2009-02-06')' at line 1

    En faisant un echo de la requete $insert, je me suis rendu compte que 'HOTEL-DE-VILLE' était en fait 'PLACE de L'HOTEL-DE-VILLE'. Donc j'ai remédié à tout cela en ajoutant la fonction addslashes à mon script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($row=mysql_fetch_assoc($result)) {
     
    $row[rue] = addslashes($row[rue]);
    $row[ville] = addslashes($row[ville]);
     
    $insert = "INSERT INTO Rapports.adresses (mac, ubr, no_civique, no_civique2, app, rue, ville, date_installation) VALUES ('$row[mac]', '$row[ubr]', '$row[no_civique]',  '$row[no_civique2]','$row[app]', '$row[rue]', '$row[ville]', '$row[date_installation]');";
     
    //Insertion des données du serveur y au serveur x
    mysql_query($insert, $sessionMySQL2);
     
    }
    Et ça fonctionne #1!

    Merci nosferapti du coup de main!

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

Discussions similaires

  1. [MySQL] INSERT INTO entre deux bases
    Par frederpe dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2013, 17h52
  2. Virgule refusée entre les séries dans INSERT INTO
    Par patic dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/01/2009, 13h29
  3. [SQL Serveur 2000] INSERT INTO tbl EXEC sp
    Par odransart dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/02/2008, 16h47
  4. [SQL Server] Insert into entre BDD identiques
    Par emilie1t dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/11/2006, 10h04
  5. trigger insert entre 2 serveurs
    Par Shabata dans le forum Développement
    Réponses: 5
    Dernier message: 27/05/2004, 13h00

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