0

私のシナリオは次のようなものです。

<input type="file" name="image[]" />
<input type="file" name="image[]" />
<input type="file" name="image[]" />
<input type="file" name="image[]" />

私のデータベースフィールドテーブルは次のとおりです。

ID = 1
image1 = image1.jpg
image2 = image2.jpg
image3 = image3.jpg
image4 = image4.jpg

行id=1にすでに値が挿入されていて、ユーザーがimage1とimage 4を更新したい場合は、目的の画像ファイルを参照して選択し、image2とimage3を空白のままにします。

mysqlクエリを実行した後の概念は次のとおりです。

ID = 1
image1 = newimage1.jpg
image2 = image2.jpg
image3 = image3.jpg
image4 = newimage4.jpg

検証クエリを実行するにはどうすればよいですか?

現在、私のコードはこのようなものであり、PHP / mysqlを初めて使用するため、ここから続行する方法がわかりません。

foreach ($_FILES['product_image']['name'] as $key => $value) {
if(!empty($value)) {
                `$upt=mysql_query("update products_list set` `image1='$pic1',image2='$pic2',image3='$pic3',image4='$pic4' where id='$id'");`
}
}

これが皆さんにとって明らかであることを願っています。前もって感謝します。=)

4

2 に答える 2

1

カウンターを使用して、正しいフィールドを更新できます。

 foreach ($_FILES['product_image']['name'] as $key => $value) {
   if(!empty($value)) {
        // field names starts from 1
        $field = 'image'.($key+1);
        mysql_query("UPDATE product_list ".
                    "SET $field = '$value' ".
                    "WHERE id = $id");
   }
 }

もちろん、これは、フォームから送信される内容に応じて、同じレコードを最大4回更新する必要があることを意味します。また、のようなものを使用してユーザー入力をエスケープする必要がありますmysql_escape_string()

于 2012-06-18T06:32:55.203 に答える
0

私はあなたがテーブルを持っている方が良いと思いますproduct_images。このようにして、製品に1つまたは複数の画像を含めることができます。フォームは同じままでもかまいませんがproducts.id、新しい画像テーブルの各レコードにを関連付けるだけです。

新しい商品を追加するときは、商品を作成してから、フォームにアップロードした各画像の画像レコードを挿入します。

商品を編集するときに、写真を簡単に削除したり、新しい写真を追加したりできます。

// remove an image
mysql_query("delete from product_images where product_id=$pid and id=$iid");

// add a new image
mysql_query("insert into product_images (product_id, image) values ($pid, '$filename')");

注:これらのクエリは直接使用しないでください。SQLインジェクションを防ぐために適切な予防策を講じていることを確認してください。

于 2012-06-18T06:32:23.893 に答える