php
  • mysql
  • 2011-11-09 120 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

    相關問題