2011-07-16 10 views
0

次のコードは複数の画像をアップロードできます。しかし、私はループの反復に基づいて、テーブル内のフィールドを更新するようにしようとしています。問題:ループ時にIF文が機能していないようです。私。最初のfile_nameをデータベースに追加するだけです。PHPループ内で最初のIF文だけが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'はfalseですか? –

+0

if文は5つで、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をチェックするのは嫌ですが、else ifは確実に1つだけが実行されるようにします。 – bcoughlan

答えて

2

INSERT_ID - 直近のクエリでを生成したIDを取得します。

ループの前に変数に格納します。

+0

ありがとうございました!完全にinsert_idという概念を忘れてしまった。 – jhui

関連する問題