2011-07-16 40 views
0

以下代碼上傳多個圖像沒有問題。但是,我試圖讓它根據循環的迭代更新表中的字段。問題:當語句循環時IF語句似乎不起作用。即它只會將第一個file_name添加到數據庫。只有第一個IF語句在3個PHP循環內執行

有人看到我在這裏做錯了嗎?非常感謝,如果是這樣!

for ($i = 1; $i < 4; $i++) 
{ 
    /* Handle the file upload */ 
    $upload = $this->upload->do_upload('image' . $i); 

    /* File failed to upload - continue */ 
    if ($upload === FALSE) 
    continue; 

    /* Get the data about the file */ 
    $data = $this->upload->data(); 

    $uploadedFiles[$i] = $data; 

    if ($i == 1) 
    { 
    $filenames1 = array(
     'product_image_front' => $data['file_name'], 
    ); 

    $this->db->where('id', $this->db->insert_id()); 
    $this->db->update('products', $filenames1); 
    } 

    if ($i == 2) 
    { 

    $filenames2 = array(
     'product_image_back' => $data['file_name'], 
    ); 

    $this->db->where('id', $this->db->insert_id()); 
    $this->db->update('products', $filenames2); 
    } 

    if ($i == 3) 
    { 

    $filenames3 = array(
     'product_image_back' => $data['file_name'], 
    ); 

    $this->db->where('id', $this->db->insert_id()); 
    $this->db->update('products', $filenames3); 
    } 

} 
+0

'$ upload'是錯誤的嗎? –

+0

有5個if語句,而不是3.如果您提到的語句是什麼?我強烈建議重構代碼以將重複代碼放入函數中,否則不必重複。 – evan

+0

你可以在你的'$ i == 2'塊中放一個'echo「hello world」'來檢查它是否到達那個點?一些提示: 1.正確縮進您的代碼。花括號之間的所有內容都應該像這樣縮進另一個級別:http://pastebin.com/SVFPZ2Tt。它更可讀。 2.對「$ i == 2」和「$ i == 3」使用「else if」。它更高效,更清潔。如果$ i是1,你不想麻煩檢查$ i == 2和$ i == 3,否則如果確保只執行一個。 – bcoughlan

回答

2

INSERT_ID - 獲取在最後一次查詢產生的ID。

將其存儲在循環前的變量中。

+0

謝謝你!完全錯過了insert_id的整個概念。 – jhui

相關問題