{MySQL} Transfert d'infos d'1 table a 1 autre
Fermé
moi
-
20 oct. 2009 à 14:57
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 - 21 oct. 2009 à 18:16
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 - 21 oct. 2009 à 18:16
A voir également:
- {MySQL} Transfert d'infos d'1 table a 1 autre
- Table ascii - Guide
- Table des matières word - Guide
- We transfert - Guide
- Mysql community server - Télécharger - Bases de données
- Transfert d'appel mobilis ✓ - Forum telephonie fixe
4 réponses
web_dev_2009
Messages postés
2
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
20 octobre 2009
20 oct. 2009 à 15:32
20 oct. 2009 à 15:32
bonjour c'est normal que tu perd tes information tu as mis les résultat de ta requête dans une variable ,je te conseille de les mettre dans un tableau ex :
while ($donnees = mysql_fetch_array($reponse))
{
$titre[] = $donnees['titre'];
$lien []= $donnees['lien'];
$id []= $donnees['id'];
}
,après tu fais ta deuxième requête d'insertion dans la base 2
$size=mysql_num_rows($reponse);//pour avoir la taille du tableau
for($i=0;$i<=$size;$i++)
{
mysql_query ("INSERT INTO $nom_table (episode, titre, lien, timestamp) VALUES ('" . $id[$i]. "', '" . $titre[$i] . "', '" . $lien[$i] . "', '" . time() ."')", $base2));
}
j'espère que ça va marcher
while ($donnees = mysql_fetch_array($reponse))
{
$titre[] = $donnees['titre'];
$lien []= $donnees['lien'];
$id []= $donnees['id'];
}
,après tu fais ta deuxième requête d'insertion dans la base 2
$size=mysql_num_rows($reponse);//pour avoir la taille du tableau
for($i=0;$i<=$size;$i++)
{
mysql_query ("INSERT INTO $nom_table (episode, titre, lien, timestamp) VALUES ('" . $id[$i]. "', '" . $titre[$i] . "', '" . $lien[$i] . "', '" . time() ."')", $base2));
}
j'espère que ça va marcher
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
20 oct. 2009 à 19:50
20 oct. 2009 à 19:50
Avec INSERT SELECT, ce serait beaucoup plus simple.
INSERT INTO bddX.tableX (ccol1,col2, col3, ..) SELECT col1, col2, col3, .. FROM bddY.tableY;
Salut tout le monde et merci pour vos réponses.
Bon alors j'ai finalement réussi a trouvé une méthode qui fonctionne a peu près... Sauf que si j'essaie de copier ma table test, je n'ai que 14 des 22 entrées qui sont copiées...
Voila mon code :
<?php
$nom_table = $_POST['nom_table'];
$base1 = mysql_connect("");
mysql_select_db('', $base1);
$base2 = mysql_connect("");
mysql_select_db('', $base2);
$reponse = mysql_query("SELECT id,titre,lien FROM $nom_table", $base1) or exit(mysql_error());
while ($donnees = mysql_fetch_array($reponse))
{
$titre = $donnees['titre'];
$lien = $donnees['lien'];
$id = $donnees['id'];
if (mysql_query ("INSERT INTO $nom_table (episode,titre,lien) VALUES ('" . $id . "', '" . $titre . "', '" . $lien . "')", $base2)
)
{
echo 'Ouais !';
}
else
{
echo 'ca a merdé';
}
}
mysql_close($base1);
mysql_close($base2);
?>
Alors voila ce qu'on m'a conseillé sur le site du zéro : "Vérifies les options de nombre de requêtes possibles, et du max time pour MySQL"
Quelqu'un sait-il comment faire ces vérifications ?
Merci d'avance pour vos réponses.
Bonne journée a tous
Bon alors j'ai finalement réussi a trouvé une méthode qui fonctionne a peu près... Sauf que si j'essaie de copier ma table test, je n'ai que 14 des 22 entrées qui sont copiées...
Voila mon code :
<?php
$nom_table = $_POST['nom_table'];
$base1 = mysql_connect("");
mysql_select_db('', $base1);
$base2 = mysql_connect("");
mysql_select_db('', $base2);
$reponse = mysql_query("SELECT id,titre,lien FROM $nom_table", $base1) or exit(mysql_error());
while ($donnees = mysql_fetch_array($reponse))
{
$titre = $donnees['titre'];
$lien = $donnees['lien'];
$id = $donnees['id'];
if (mysql_query ("INSERT INTO $nom_table (episode,titre,lien) VALUES ('" . $id . "', '" . $titre . "', '" . $lien . "')", $base2)
)
{
echo 'Ouais !';
}
else
{
echo 'ca a merdé';
}
}
mysql_close($base1);
mysql_close($base2);
?>
Alors voila ce qu'on m'a conseillé sur le site du zéro : "Vérifies les options de nombre de requêtes possibles, et du max time pour MySQL"
Quelqu'un sait-il comment faire ces vérifications ?
Merci d'avance pour vos réponses.
Bonne journée a tous
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
21 oct. 2009 à 12:17
21 oct. 2009 à 12:17
Rien à voir avec le nombres de requetes ou d'un max time...
Avec INSERT SELECT, ce serait beaucoup plus simple.
Avec INSERT SELECT, ce serait beaucoup plus simple.
// LA VALEUR DE CETTE CHAINE EST À CONTROLER IMPÉRATIVEMENT (lettres, chiffres et underscore) $table = $_POST['nom_table']; $host = 'localhost'; $user = 'root'; $password = 'ton-mot-de-passe'; $base1 = 'nom-de-la-bdd-d'origine'; $base2 = 'nom-de-la-bdd-de-destination'; mysql_connect($host, $user, $password); $sql = 'INSERT INTO ' . $base2 . '.' . $table . '(episode, titre, lien) SELECT id, titre, lien FROM ' . $base1 . '.' . $table; $result = mysql_query($sql) or exit(mysql_error()); echo mysql_affected_rows() . ' enregistrements ont été effectués.';
Salut P@t@ch0n,
merci pour tes réponses (j'avais essayé la première hier mais sans succés...).
J'ai fait pleins d'essais a partir de ce que tu m'as conseillé mais j'arrive pas à trouver le problème.
Voici mon code :
<?php
$nom_table = $_POST['nom_table'];
$base1 = mysql_connect("", "", "");
mysql_select_db('', $base1);
$base2 = mysql_connect("", "", "");
mysql_select_db('', $base2);
$sql = 'INSERT INTO ' . $base2 . '.' . $table . '(episode, titre, lien)
SELECT id, titre, lien FROM ' . $base1 . '.' . $table;
$result = mysql_query($sql) or exit(mysql_error());
echo mysql_affected_rows() . ' enregistrements ont été effectués.';
mysql_close($base1);
mysql_close($base2);
?>
et l'erreur qui apparait :
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 'id #2.(episode, titre, lien) SELECT id, titre, lien FROM Resou
(le "Resou" je sais pas d'ou il me sort ca...)
Si tu as une idée, elle est la bienvenue. :-)
Sinon j'ai un autre petit problème sur lequel je penche et pour lequel tu pourras surement m'aider (si ca ne te derange pas, bien sur) : je cherche une requete qui me permette de copier les infos se trouvant dans le champ id (1,2,3,4,5...) et de les copier dans le champ episode. J'ai essayé ca :
<?php
mysql_connect("", "", "");
mysql_select_db('');
$reponse = mysql_query('SELECT id FROM $nom_table') or exit(mysql_error());
$donnees = mysql_fetch_array($reponse);
$nom_table = $_POST['nom_table'];
mysql_query (UPDATE $nom_table SET episode=id);
mysql_close();
?>
Mais ca ne marche pas, j'ai l'erreur suivante qui apparait :
Parse error: syntax error, unexpected T_VARIABLE in /homepages/9/d264352590/htdocs/administration/test/test4.php on line 12
(la ligne 12 c'est celle ou ya mysql_query)
Aurais tu une petite idée pour résoudre ce problème.
Un grand merci d'avance pour ton aide précieuse.
merci pour tes réponses (j'avais essayé la première hier mais sans succés...).
J'ai fait pleins d'essais a partir de ce que tu m'as conseillé mais j'arrive pas à trouver le problème.
Voici mon code :
<?php
$nom_table = $_POST['nom_table'];
$base1 = mysql_connect("", "", "");
mysql_select_db('', $base1);
$base2 = mysql_connect("", "", "");
mysql_select_db('', $base2);
$sql = 'INSERT INTO ' . $base2 . '.' . $table . '(episode, titre, lien)
SELECT id, titre, lien FROM ' . $base1 . '.' . $table;
$result = mysql_query($sql) or exit(mysql_error());
echo mysql_affected_rows() . ' enregistrements ont été effectués.';
mysql_close($base1);
mysql_close($base2);
?>
et l'erreur qui apparait :
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 'id #2.(episode, titre, lien) SELECT id, titre, lien FROM Resou
(le "Resou" je sais pas d'ou il me sort ca...)
Si tu as une idée, elle est la bienvenue. :-)
Sinon j'ai un autre petit problème sur lequel je penche et pour lequel tu pourras surement m'aider (si ca ne te derange pas, bien sur) : je cherche une requete qui me permette de copier les infos se trouvant dans le champ id (1,2,3,4,5...) et de les copier dans le champ episode. J'ai essayé ca :
<?php
mysql_connect("", "", "");
mysql_select_db('');
$reponse = mysql_query('SELECT id FROM $nom_table') or exit(mysql_error());
$donnees = mysql_fetch_array($reponse);
$nom_table = $_POST['nom_table'];
mysql_query (UPDATE $nom_table SET episode=id);
mysql_close();
?>
Mais ca ne marche pas, j'ai l'erreur suivante qui apparait :
Parse error: syntax error, unexpected T_VARIABLE in /homepages/9/d264352590/htdocs/administration/test/test4.php on line 12
(la ligne 12 c'est celle ou ya mysql_query)
Aurais tu une petite idée pour résoudre ce problème.
Un grand merci d'avance pour ton aide précieuse.
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
21 oct. 2009 à 18:16
21 oct. 2009 à 18:16
Salut,
$base1 et $base2 sont les noms des bases de données, pas des ressources renvoyées par mysql_select_db().
Tu n'as pas besoin dans l'absolu d'utiliser mysql_select_db(), et une connexion à mysql suffit.
Pour ton second problème, c'est on ne peut plus simple.
Une seule requête, la première que tu as faites ne sert à rien.
Ton erreur vient du fait que tu as certainement omis que les chaines entre apostrophes ne sont pas évaluées par php.
$base1 et $base2 sont les noms des bases de données, pas des ressources renvoyées par mysql_select_db().
Tu n'as pas besoin dans l'absolu d'utiliser mysql_select_db(), et une connexion à mysql suffit.
Pour ton second problème, c'est on ne peut plus simple.
Une seule requête, la première que tu as faites ne sert à rien.
Ton erreur vient du fait que tu as certainement omis que les chaines entre apostrophes ne sont pas évaluées par php.
20 oct. 2009 à 15:47
je vais essayer ca de suite et je te redis si ca fonctionne.
Encore merci pour ton aide.
20 oct. 2009 à 16:00
j'ai essayé ta méthode mais ca ne marche pas... Vois tu une erreur dans mon code ?
<?php
$nom_table = $_POST['nom_table'];
$base1 = mysql_connect();
mysql_select_db();
$base2 = mysql_connect();
mysql_select_db();
$reponse = mysql_query('SELECT * FROM $nom_table', $base1) or exit(mysql_error());
while ($donnees = mysql_fetch_array($reponse))
{
$titre[] = $donnees['titre'];
$lien []= $donnees['lien'];
$id []= $donnees['id'];
}
$size=mysql_num_rows($reponse);
for($i=0;$i<=$size;$i++)
{
mysql_query ("INSERT INTO $nom_table (episode, titre, lien) VALUES ('" . $id[$i]. "', '" . $titre[$i] . "', '" . $lien[$i] . "')", $base2);
}
mysql_close($base1);
mysql_close($base2);
?>
Encore merci pour ton aide.
20 oct. 2009 à 16:08
$titre[] = array();
$lien []= array();
$id []= array();