2013-04-17 68 views
0

我在mysql的數據庫中的兩個表分別是:如何從一個查詢中獲取值,並將其分配給另一個

  1. 汽車資訊車
  2. 圖片

兩者的這些表值由一個表單填充。在Car表中,我有一個名字爲'CarImageID'的字段,它是一個自動遞增的主鍵,在圖像表中我有相同的字段'CarImageID',但FK的NOT UNIQE INDEX。我想要的是每當我按下提交按鈕第二個查詢從第一個查詢獲取它的值。我也創造了他們之間的關係。如何從Imagequery獲取CarImageID並在我的第二次查詢中使用,它是CarInfoQuery?

<?php 

require_once('db.php'); 
    @$CarID=$_POST['CarID']; 
    @$CarName=$_POST['pname']; 
    @$CarModel=$_POST['pstatus']; 
if(isset($_FILES['file_upload'])) 
{ 

$shuff=str_shuffle("ABD6565LSLFKDSAJFD"); 
mkdir("upload/$shuff"); 
$files=$_FILES['file_upload']; 

for($x = 0; $x < count($files['name']); $x++) 
{ 
    $name=$files['name'][$x]; 
    $tmp_name=$files['tmp_name'][$x]; 
    if(move_uploaded_file($tmp_name, "upload/$shuff/".$name)) 
    { 
     $imagequery="INSERT INTO CarImages(CarImageID, ImageName, ImagePath) 

     VALUES(‘ ’, '$name', 'upload/$name')"; 

     mysql_query($imagequery); 

      echo 'Image '. $name .' Uploaded Successfully <br>'; 

    } 
    else 
    { 
     echo 'uploading failed'; 
    } 

} 
$carinfoquery="INSERT INTO Car(CarID, CarName, CarModel, CarImageID) 

     VALUES('// this value should take its value from first query', '$CarName', '$CarModel', 'CarImageID')"; 

      mysql_query($carinfoquery) or die(mysql_error()); 

      if($carinfoquery) 
      { 
       echo '<br><br> The Car Information Insertion was 
           Successfully <br><br>'; 
      } 
      else 
      { 
       echo '<br><br> Car Insertion Failed'; 
      }   

}

回答

1

mysql_query($imagequery); 
    $carimageid = mysql_insert_id(); 

或者是安全的,使用的mysql_query資源:

$res = mysql_query($imagequery); 
$carimageid = mysql_insert_id($res); 

第二種方法是有用的,如果你有多個querys和Don」不想碰上混合起來的機會。

0

不要使用MySQL的函數使用的mysqli

,如果你使用的mysqli使用

$id = $mysqli->insert_id; 

在當前的功能可以使用

$res = mysql_query($imagequery); 
$id = mysql_insert_id($res); 

使用這個號碼,在明年查詢插入。

+0

我把mysqli改回mysql除了這個以外,其他的錯誤都被移除了警告:mysql_insert_id()期望參數1是資源,在C中給出布爾值:' – user2279037

+0

檢查我更新的答案。 –

0

你有second insert query之前添加查詢檢索最後一個條目ID因爲你不表示它在第一個查詢,只是讓數據庫處理它最後一項的基礎上(這是因爲它是一個自動增量場)

所以改變

mysql_query($imagequery); 

$lastid = mysql_query($imagequery); 
$last_entry_id = mysql_insert_id($lastid); 

現在你已經存儲在last_entry_id您的變量,你可以在第二個查詢使用

我想還記得你,mysql_功能已被棄用,所以我會建議你切換到mysqliPDO新項目。

+0

我收到這個錯誤消息:'警告:mysqli_query()期望至少有2個參數,1在C:\ xampp \ htdocs \ PropertyImages \ index.php中給出的第20行' – user2279037

+0

這是因爲你沒有使用'mysqli'作爲連接,但'mysql_'請直接拷貝和粘貼,我沒有使用'mysqli' – Fabio

0

得到插入ID

$res = mysql_query($imagequery); 
$carimageid = mysql_insert_id(); 

如果DB山坳CarImageID值爲$ carimageid然後

$carinfoquery="INSERT INTO Car(CarID, CarName, CarModel, CarImageID) 

     VALUES('// this is CarID if col is auto_increment ,blank this', '$CarName', '$CarModel', '$carimageid')"; 

然後使用if($ run_query)不是,如果($ carinfoquery)

 $run_query = mysql_query($carinfoquery) or die(mysql_error()); 

      if($run_query) 
      { 
       echo '<br><br> The Car Information Insertion was 
           Successfully <br><br>'; 
      } 
      else 
      { 
       echo '<br><br> Car Insertion Failed'; 
      } 

更新 表結構可能是

Car(CarID, CarName, CarModel) 
CarImages(CarImageID, ImageName, ImagePath,CarID) 
+0

我改回mysqli到mysql除了這一個刪除的其他錯誤警告:mysql_insert_id()期望參數1是資源, C:' – user2279037

0

您不需要在CarImageID處插入,因爲它是自動增量列。 如果您有Warning: mysql_insert_id() expects parameter 1 to be resource, boolean... 這意味着您的INSERT語句失敗,因此請使用die(mysql_error()來查找問題。

$imagequery="INSERT INTO CarImages(ImageName, ImagePath) VALUES('$name', 'upload/$name')"; 
mysql_query($imagequery) or die(mysql_error()); 
$id = mysql_insert_id($res); 

編輯1:

我覺得你的表結構有問題。一輛汽車可能有多個圖像。所以表結構應該是這樣的: Car(CarID, CarName, CarModel)其中CarID是PK和自動增量。 CarImages(CarID, CarImageID, ImageName, ImagePath)其中CarID爲FK,CarImageID爲自動遞增。 您應該先插入CAR表,然後獲得CarIDmysql_insert_id()並使用此ID爲INSERT到CarImages表。 '

+0

你是對的,但給這個錯誤按摩:'不能添加或更新子行:外鍵約束失敗('propertyimage'.'propertyimages',CONSTRAINT'propertyimages_ibfk_1' FOREIGN KEY('PropertyImageID')REFERENCES'屬性'('PropertyImageID')ON DELETE CASCADE ON UPDATE CASCADE)' – user2279037

+0

其實這是我的真實代碼 – user2279037

+0

我有兩個表,一個是屬性,一個是poperties ima ges – user2279037

相關問題