Problème d'insertion BDD php
vivienneault
Messages postés
23
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis actuellement entrain de faire un script php de transfert de données d'une base à une autre. Les tables ne sont pas les mêmes et les champs non-plus.
je bloque sur une partie du script qui ne s'execute pas comme je l'aimerais.
Pour résumer, j'ai 2 tables : wp_posts et wp_postmeta. Je veux juste récupérer le dernier ID de wp_posts pour le mettre dans wp_postmeta dans la clé étrangére 'post_id'. Le problème est que tous s'insert correctement sauf post_id qui est toujours à 0.
merci de votre réponse
<?php
$connexion = mysql_connect('127.0.0.1','root','');
if (!mysql_select_db("biblio")) {
echo "Impossible de sélectionner la base mydbname : " . mysql_error();
exit;
}
$sql_post = "SELECT NUMBIBLIO,LIBELLEBIBLIO,LIENSBIBLIO,PROCESSBIBLIO,DATEBIBLIO,CATEGORIEBIBLIO,MOTSCLESBIBLIO FROM docsbiblio";
$recup_info = mysql_query($sql_post);
while ($row = mysql_fetch_array($recup_info)){
$numbiblio = $row['NUMBIBLIO'];
$libellebiblio = $row['LIBELLEBIBLIO'];
$liensbiblio = $row['LIENSBIBLIO'];
$processbiblio = $row['PROCESSBIBLIO'];
$datebiblio = $row['DATEBIBLIO']." 00:00:00";
$categoriebiblio = $row['CATEGORIEBIBLIO'];
$motsclesbiblio = $row['MOTSCLESBIBLIO'];
mysql_select_db('wpInsert');
$insert_post = "INSERT INTO 'wp_posts'('ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_content_filtered', 'post_parent', 'guid', 'menu_order', 'post_type', 'post_mime_type', 'comment_count') VALUES(NULL,'0','".$datebiblio."', '0000-00-00 00:00:00', '','".$libellebiblio."','','publish','open','open', '', '', '', '', '0000-00-00 00:00:00','0000-00-00 00:00:00', '', '0','".$liensbiblio."', '0', 'post', '', '0')";
$insertion_post = mysql_query ($insert_post);
$sql_postmeta = "SELECT ID FROM wp_posts ORDER BY ID ASC LIMIT 1";
$Id_Post = mysql_query($sql_postmeta);
$insert_postmeta = "INSERT INTO 'wp_postmeta'('meta_id','post_id','meta_key','meta_value') VALUES(NULL,'".$Id_Post."',NULL,NULL)";
$insertion_postmeta = mysql_query ($insert_postmeta);
}
?>
Je suis actuellement entrain de faire un script php de transfert de données d'une base à une autre. Les tables ne sont pas les mêmes et les champs non-plus.
je bloque sur une partie du script qui ne s'execute pas comme je l'aimerais.
Pour résumer, j'ai 2 tables : wp_posts et wp_postmeta. Je veux juste récupérer le dernier ID de wp_posts pour le mettre dans wp_postmeta dans la clé étrangére 'post_id'. Le problème est que tous s'insert correctement sauf post_id qui est toujours à 0.
merci de votre réponse
<?php
$connexion = mysql_connect('127.0.0.1','root','');
if (!mysql_select_db("biblio")) {
echo "Impossible de sélectionner la base mydbname : " . mysql_error();
exit;
}
$sql_post = "SELECT NUMBIBLIO,LIBELLEBIBLIO,LIENSBIBLIO,PROCESSBIBLIO,DATEBIBLIO,CATEGORIEBIBLIO,MOTSCLESBIBLIO FROM docsbiblio";
$recup_info = mysql_query($sql_post);
while ($row = mysql_fetch_array($recup_info)){
$numbiblio = $row['NUMBIBLIO'];
$libellebiblio = $row['LIBELLEBIBLIO'];
$liensbiblio = $row['LIENSBIBLIO'];
$processbiblio = $row['PROCESSBIBLIO'];
$datebiblio = $row['DATEBIBLIO']." 00:00:00";
$categoriebiblio = $row['CATEGORIEBIBLIO'];
$motsclesbiblio = $row['MOTSCLESBIBLIO'];
mysql_select_db('wpInsert');
$insert_post = "INSERT INTO 'wp_posts'('ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_content_filtered', 'post_parent', 'guid', 'menu_order', 'post_type', 'post_mime_type', 'comment_count') VALUES(NULL,'0','".$datebiblio."', '0000-00-00 00:00:00', '','".$libellebiblio."','','publish','open','open', '', '', '', '', '0000-00-00 00:00:00','0000-00-00 00:00:00', '', '0','".$liensbiblio."', '0', 'post', '', '0')";
$insertion_post = mysql_query ($insert_post);
$sql_postmeta = "SELECT ID FROM wp_posts ORDER BY ID ASC LIMIT 1";
$Id_Post = mysql_query($sql_postmeta);
$insert_postmeta = "INSERT INTO 'wp_postmeta'('meta_id','post_id','meta_key','meta_value') VALUES(NULL,'".$Id_Post."',NULL,NULL)";
$insertion_postmeta = mysql_query ($insert_postmeta);
}
?>
2 réponses
-
Bonjour
$Id_Post = mysql_query($sql_postmeta);
Après exécution de cette ligne, $Id_Post ne contient pas le champ wp_posts de la table ID, mais une ressource.
Pour retrouver la donnée qui t'intéresse, il faut faire :
$sql_postmeta = "SELECT ID FROM wp_posts ORDER BY ID ASC LIMIT 1"; $rep = mysql_query($sql_postmeta); $ll=mysql_fetch_array($rep) $Id_Post=$ll['wp_posts']; $insert_postmeta = "INSERT INTO 'wp_postmeta'('meta_id','post_id','meta_key','meta_value') VALUES(NULL,'".$Id_Post."',NULL,NULL)";D'ailleurs, si j'ai bien compris ce que tu cherches à faire, il aurait mieux valu faire... ORDER BY ID DESC ...
-
Merci beaucoup pour cette réponse claire et rapide. Pour le ASC c'est une erreur de ma part que j'ai oublié de corrigé, c'est bien DESC que je dois indiqué.
En tout cas encore merci !