php
  • mysql
  • 2011-11-09 49 views 0 likes 
    0

    所以基本上我一直试图从列表中提取列从我的第三个表中插入列。从不同的表中提取列并插入另一个表

    我有一个信息表中存储的用户信息, 存储用户的头一张照片图像表, 和一个ID表,就像是一个参考表,用于显示有关在必要时修正用户正确的头部照片(如用户查询或者干脆显示...)

    我的代码:

    $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()); 
    } 
    

    所以上面的代码所示只是我的想法:
    1.从信息表中获取信息的ID
    2.获取图像的ID从图像表
    3.将两个ID添加到列id_table分别

    然后我得到这个错误信息:

    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

    我想不出问题出在哪里...

    回答

    1

    $result_1$result_2只包含指向结果的指针。你仍然需要通过循环来获得实际值。

    试试这个:

    $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

    如果我只是尝试用另一个SQL语法插入,例如,“INSERT INTO id_table (参数)SELECT .. FROM .. WHERE ..“ – jasonkim

    +0

    @ y26jin你不能那样做。我更新了我的答案。 – Neal

    +0

    老实说,我还是输了(im noob ..),你能更具体吗? – jasonkim

    0

    在你的代码只是执行查询。但是您没有获取字段或列值。你可以使用mysql_fetch_array或mysql_fetch_row来获取它。

    上午修改代码以您的具体需求:

    $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()); } 
    

    更多信息,请参阅: - http://in3.php.net/manual/en/function.mysql-fetch-row.php http://in3.php.net/manual/en/function.mysql-fetch-array.php

    相关问题