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);
}
}
'$ upload'はfalseですか? –
if文は5つで、3つではありません。コードをリファクタリングして、関数内に繰り返しコードを入れたり、それを繰り返す必要はありません。 – evan
あなたの '$ 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