2011-11-09 2 views
0

Donc, fondamentalement, j'ai essayé d'insérer des colonnes dans ma troisième table à partir de colonnes extraites de 2 tables dans le précédent.Extraire des colonnes de différentes tables et les insérer dans une autre

J'ai une table d'information qui stocke les informations des utilisateurs, une table d'image qui stocke les photos tête des utilisateurs, et une table id qui est comme une table de référence, conçu pour afficher des photos correctes de tête associés lorsque cela est nécessaire pour corriger les utilisateurs (comme l'interrogation utilisateur ou tout simplement l'affichage ...)

mon code:

$result_1 = mysql_query("SELECT info_id FROM info WHERE info_name = '$_POST[name]'"); 
$result_2 = mysql_query("SELECT image_id FROM image WHERE image_name = '$_FILES[file][name]'"); 
$sql = "INSERT INTO id_table (main_id, id_info, id_image) 
     VALUES (NULL, $result_1, $result_2);"; 
if(!mysql_query($sql,$connect_database)){ 
    die('Error: ',mysql_error()); 
} 

Ainsi, les codes ci-dessus simplement illustré mon idée:
1. obtenir l'ID de l'info de la table d'info
2. obtenir l'ID de l'image de la table d'image
3. Insérez les deux ids en colonnes dans id_table respectivement

J'ai obtenu cette information d'erreur:

Error: 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 #4, Resource id #5)' at line 1

je ne pouvais pas savoir où le problème est ...

Répondre

1

$result_1 et $result_2 juste contenir des pointeurs vers les résultats. vous devez toujours les parcourir pour obtenir les valeurs réelles.

Essayez ceci:

$result_1 = mysql_query("SELECT info_id FROM info WHERE info_name = '$_POST[name]'"); 
$row1 = mysql_fetch_array($result_1); // get 1st result row 

$result_2 = mysql_query("SELECT image_id FROM image WHERE image_name = '$_FILES[file][name]'"); 
$row2 = mysql_fetch_array($result_2); // get 2nd result row 

$sql = "INSERT INTO id_table (main_id, id_info, id_image) 
     VALUES (NULL, '{$row1['info_id']}', '{$row1['image_id']}');"; 
if(!mysql_query($sql,$connect_database)){ 
    die('Error: ',mysql_error()); 
} 
+0

si j'essaie simplement d'insérer une autre syntaxe SQL, par exemple, "INSERT INTO id_table (paramètres) SELECT .. FROM .. WHERE .. " – jasonkim

+0

@ y26jin vous ne pouvez pas faire cela. J'ai mis à jour ma réponse. – Neal

+0

Honnêtement, je suis toujours perdu (im noob ..). Pourriez-vous être plus précis? – jasonkim

0

Dans votre code vous exécutez simplement la requête. Mais vous n'avez pas récupéré la valeur du champ ou de la colonne. vous pouvez le récupérer en utilisant mysql_fetch_array ou mysql_fetch_row.

Am modifier le code à votre besoin exact:

$result_1 = mysql_query("SELECT info_id FROM info WHERE info_name = '$_POST[name]'");  
$row1 = mysql_fetch_row($result_1); 
$infoid = $row1[0]; 
$result_2 = mysql_query("SELECT image_id FROM image WHERE image_name = '$_FILES[file][name]'"); 
$row2 = mysql_fetch_row($result_2); 
$imageid = $row2[0] 

$sql = "INSERT INTO id_table (main_id, id_info, id_image)   VALUES (NULL, $infoid, $imageid);"; 
if(!mysql_query($sql,$connect_database)){ die('Error: ',mysql_error()); } 

Pour plus d'informations, veuillez consulter: - http://in3.php.net/manual/en/function.mysql-fetch-row.php http://in3.php.net/manual/en/function.mysql-fetch-array.php

Questions connexes