التحقق من صحة إدخال ملفات متعددة في استعلام mysql

سيناريو مثل هذا:

<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 والصورة 4 ، فسيتم استعراض ملف الصور المطلوب وتحديده ويتركان الصورة 2 والصورة 3 فارغة.

إليك المفهوم بعد تنفيذ استعلام 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'");`
}
}

آمل أن هذا واضح لكم يا رفاق. شكرا مقدما. =)

0

2 إجابة

يمكنك استخدام عداد لتحديث الحقل الصحيح:

 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");
   }
 }

وبالطبع ، فإن هذا يعني أنه سيتعين عليك تحديث نفس السجل حتى أربع مرات اعتمادًا على ما يتم إرساله من النموذج الخاص بك. أيضًا ، يجب أن تفلت من إدخال المستخدم باستخدام شيء مثل mysql_escape_string() .

1
وأضاف
شكرا للمساعدة. إذا فهمت ذلك بشكل صحيح ، فإن حقل $ SET يقوم بتحديث الحقول بناءً على عدد المدخلات المتوفرة لدي؟ إذا كان لدي 4 ملفات ، فستقوم بتحديث ما يسمى بـ 4 حقول فقط من خلال هذا البيان؟ وهل من الممكن إضافة 1 إلى مفتاح $؟ لأن الصفيف يبدأ من 0 أليس كذلك؟ أو الطريقة الوحيدة لتحرير حقل قاعدة البيانات الخاصة بي؟
وأضاف المؤلف Dr3am3rz, مصدر
على أي حال ، لقد حاولت ذلك وتعمل! شكرا جزيلا للمساعدة ، تمسك بهذا لمدة 2 أيام. = (ولكن لا يزال معرفة كيفية إضافة قيمة صفيف مفتاح $.
وأضاف المؤلف Dr3am3rz, مصدر
مرحبا شكرا جزيلا! لقد استعملت ($ مفتاح <4) {$ مفتاح ++ ؛} الآن فقط .. لول .. ولكن سأستخدم طريقتك. شكرا جزيلا!! = D
وأضاف المؤلف Dr3am3rz, مصدر
لقد قمت بتمييزه بالفعل ولكن لا يمكنني التصويت كوز تقول إنه يلزم 15 ممثلاً للتصويت. = (
وأضاف المؤلف Dr3am3rz, مصدر
@ user1462863 - لقد قمت بتحديث إجابتي.
وأضاف المؤلف Cyclonecode, مصدر
@ user1462863 - إذا كانت هذه الإجابة تساعدك على التفكير في التصويت وتعيينها على أنها صحيحة.
وأضاف المؤلف Cyclonecode, مصدر

أعتقد أنه سيكون من الأفضل وجود جدول product_images . بهذه الطريقة يمكن أن يحتوي المنتج على صورة واحدة أو أكثر. يمكن أن يبقى النموذج الخاص بك كما هو ، لكنك تقوم فقط بربط 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.

0
وأضاف
شكرا للمساعدة. ما زلت لا أحصل عليه ، لأنه ما زال لدي حقل إدخال آخر بجانب الصور.
وأضاف المؤلف Dr3am3rz, مصدر