Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1158 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP/MySQL INSERT INTO en masse qui déraille (oubli de données)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP/MySQL INSERT INTO en masse qui déraille (oubli de données)

n°1903230
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2009 à 15:54:55  profilanswer
 

Bonjour,
 
J'ai crée un script tout bête pour migrer des données d'une table vers une autre. Le script fonctionne presque mais il me zappe des entrées [:corten]
 
Voici le script :
 

Code :
  1. ## FICHIER DE MIGRATION VERS DRUPAL
  2. # CONFIGURATION DE LA BASE DE DONNEE
  3. $dbhost = 'localhost';
  4. $dbname = 'drupal';
  5. $dbuser = 'root';
  6. $dbpass = '';
  7. # CONNEXION MYSQL
  8. $connect = mysql_connect($dbhost,$dbuser,$dbpass);
  9. mysql_select_db($dbname,$connect);
  10. //IMPORTATION DES DONNEES DANS LA BASE NODE
  11. # LECTURE DES DONNEES DE LA TABLE SOURCE
  12. $result = mysql_query('
  13. SELECT
  14. *
  15. FROM
  16. recettes
  17. ORDER BY
  18. id
  19. ASC');
  20. $row = mysql_fetch_array($result);
  21. while($row = mysql_fetch_array($result)) {
  22. $numid=mysql_fetch_array(mysql_query('SELECT max(nid) FROM node'));
  23. $i = ++$numid['0'];
  24. mysql_query("
  25. INSERT INTO node
  26. (nid,vid ,type ,language ,title ,uid ,status ,created ,changed ,comment ,promote ,moderate ,sticky ,tnid ,translate)
  27. VALUES
  28. ('NULL' ,'".$i."' , 'recette', 'fr', '".$row[titre]."', '1', '1', '1246872423', '1246872423', '2', '1', '0', '0', '0', '0')
  29. " ) or mysql_error();
  30. }


En gros, la base recette contient 383 recettes et une fois le script lancé, il me fait tout nickel mais... je perds 5 recettes en cours de route.
Du coup la table "node" contient l'ensemble des données, parfaitement recopiées, moins 5 et ça me pose un gros problème car après, je fais le même traitement mais sur la table node pour en copier une partie du contenu dans une autre table :whistle:  
 
Savez vous comment c'est possible ?
Je deviens dingue. :pt1cable:  
 
MERCI

mood
Publicité
Posté le 07-07-2009 à 15:54:55  profilanswer
 

n°1903255
olivthill
Posté le 07-07-2009 à 16:33:51  profilanswer
 

Il faudrait examiner ces cinq enregistrements manquants. Il y a peut-être des apostrophes dans le titre, ou des champs vides, ou des clés identiques, ou d'autres choses particulières, que n'ont pas les autres enregistrements.

n°1903257
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2009 à 16:38:25  profilanswer
 

Merci pour ta réponse.
Les champs manquants ne sont pas des doublons et ne semblent pas avoir de particularités car là je perds 5 recettes, mais quand je fais la seconde opération (partant de lanouvelle base et copiant dans une autre) là j'en perds 30 !!!

n°1903286
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 07-07-2009 à 17:34:40  profilanswer
 

met un "or die(mysql_error());  " pour t'afficher l'erreur si tu as une erreur de requete
 
et sinon  
tu affiche la requete génére, et tu teste a la main si ta requete marche  
et tu verra par la même occasion si dans un premier temps elle est générée

n°1903287
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2009 à 17:36:16  profilanswer
 

Merci pour la réponse c'est sympa.
Aucune erreur renvoyée.

 


Message édité par vanquishV12 le 07-07-2009 à 17:55:05
n°1903300
PunkRod
Digital Mohawk
Posté le 07-07-2009 à 17:59:06  profilanswer
 

renvoie le code SQL généré (vérifie qu'il ne manque rien et qu'il soit à priori correct), et lance le dans un phpmyadmin voir ce que ça donne.

n°1903303
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2009 à 18:03:30  profilanswer
 

Alors là par contre je n'ai rien compris!

n°1903423
esox_ch
Posté le 08-07-2009 à 07:46:39  profilanswer
 

Au lieu d'executer l'SQL avex mysql_query, tu l'imprimes à l'écran, et après tu balances ça "à la main" dans phpmyadmin, et tu regardes pourquoi ça plante pour ces requêtes


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1903428
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 08-07-2009 à 08:59:48  profilanswer
 

esox_ch a écrit :

Au lieu d'executer l'SQL avex mysql_query, tu l'imprimes à l'écran, et après tu balances ça "à la main" dans phpmyadmin, et tu regardes pourquoi ça plante pour ces requêtes


en clair tu fait ca

Code :
  1. while($row = mysql_fetch_array($result)) {
  2.                $numid=mysql_fetch_array(mysql_query('SELECT max(nid) FROM node'));
  3.                 $i = ++$numid['0'];
  4. //generation de la requete
  5.                $sql="INSERT INTO node (nid,vid ,type ,language ,title ,uid ,status ,created ,changed ,comment ,promote ,moderate ,sticky ,tnid ,translate)
  6.                      VALUES ('NULL' ,'".$i."' , 'recette', 'fr', '".$row[titre]."', '1', '1', '1246872423', '1246872423', '2', '1', '0', '0', '0', '0');"
  7.              echo $sql."<br>"//tu affiche la requete  (le br c'est juste pour que ca soit plus lisible a l'affichage)
  8.                mysql_query($sql) or mysql_error();//tu execute ta requete
  9. }

n°1903432
vanquishV1​2
se coucher tard nuit
Posté le 08-07-2009 à 09:09:38  profilanswer
 

Bon j'ai compris mon erreur :D  
Je me connectais pas sur la bonne base [:kaio]
 
Donc tout était bon.
Un grand merci pour ceux qui ont essayé de m'aider.

mood
Publicité
Posté le 08-07-2009 à 09:09:38  profilanswer
 

n°1903461
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 08-07-2009 à 10:23:08  profilanswer
 

ah oui en effet il parait que c'est mieux quand même!!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP/MySQL INSERT INTO en masse qui déraille (oubli de données)

 

Sujets relatifs
[Access 2007] modification de masse[résolu] Activer la lib GD - IIS - PHP
Changer le port de MySQLPSP, Base de données et accès concurent
Envoyer des sms via PHPInterface requête Base de données EXCEL
configurer mon projet C avec ODBC et Mysqlconfigurer mon projet C avec ODBC et Mysql
connecter à une base de données Mysql via ODBC à partir du C 
Plus de sujets relatifs à : PHP/MySQL INSERT INTO en masse qui déraille (oubli de données)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR