البرمجة

حل مشكلة إدخال بيانات الحدث في قاعدة البيانات باستخدام PDO PHP

عندما تتلقى رسالة خطأ مثل “Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails”، فهذا يعني أن قيد المفتاح الخارجي (Foreign Key Constraint) قد فشل في الامتثال. في هذه الحالة، الجدول الذي تحاول إدخال بيانات إليه (events) يحتوي على مفتاح خارجي (event_cat) يشير إلى جدول آخر (categories)، والقيمة التي تحاول إدخالها في event_cat ليست موجودة في جدول categories.

يبدو أنك تستخدم استعلامات فرعية للعثور على cat_id و tournament_id من اسماء الفئة والبطولة على التوالي. إذا كان الهدف هو استخدام القيم المسترجعة من هذه الاستعلامات الفرعية كقيم لمفاتيح الفئة والبطولة في جدول الأحداث، يجب عليك ضمن هذه الاستعلامات الفرعية عبارة WHERE لتحديد الصفوف بناءً على الاسم واسترداد القيمة المطابقة فقط، مثل:

sql
$subsquery1 = "SELECT cat_id FROM categories WHERE cat_name = :event_cat_name"; $subsquery2 = "SELECT tournament_id FROM tournaments WHERE tournament_name = :event_tournament_name";

ثم، يجب عليك تمرير القيم المطلوبة إلى execute مع استعلام الإدراج الأساسي، مثل:

sql
$resultx = $statementx->execute(array(':event_team1' => $event_team1, ':event_team2' => $event_team2, ':event_cat_name'=> $event_cat, ':event_tournament_name'=> $event_tournament, ':event_start_at' => $event_start_at, ':event_end_to' => $event_end_to,':event_by'=>$event_by));

تأكد أيضًا من أن الأسماء التي تم تمريرها إلى execute هي الأسماء الصحيحة للقيم التي تبحث عنها في الجدول، وأن الجداول تحتوي على البيانات المناسبة.

المزيد من المعلومات

من الواضح أن الخطأ يحدث بسبب عدم وجود قيمة صحيحة لـ event_cat أو event_tournament في جدولي categories و tournaments على التوالي. لحل هذه المشكلة، يجب التأكد من أن القيم التي تم إرجاعها من الاستعلامات الفرعية ($subsquery1 و $subsquery2) تمثل مفاتيح صحيحة في الجداول المقابلة. لذلك، يمكنك متابعة الخطوات التالية:

  1. التحقق من البيانات: تأكد من أن الأسماء التي تم تمريرها إلى الاستعلامات الفرعية ($event_cat و $event_tournament) تمثل القيم الصحيحة لـ cat_name و tournament_name في جداول categories و tournaments على التوالي.

  2. استخدام القيم الصحيحة في الاستعلامات الرئيسية: تأكد من أنك تستخدم القيم الصحيحة المسترجعة من الاستعلامات الفرعية ($subsquery1 و $subsquery2) كقيم لـ event_cat و event_tournament في الاستعلام الرئيسي.

  3. استخدام البيانات المقترنة: تأكد من أن البيانات في جدولي categories و tournaments تحتوي على القيم المقترنة بشكل صحيح. على سبيل المثال، إذا كان لديك قيمة cat_id معينة في جدول categories، يجب أن تكون لديك قيمة cat_name مقابلها.

  4. استخدام روابط البيانات الصحيحة: تأكد من أن القيم التي تم إدخالها في جدول الأحداث (events) كقيم لـ event_cat و event_tournament تمثل مفاتيح صحيحة في جداولهما المقابلة.

من المهم أيضًا التأكد من أن الجداول تحتوي على البيانات الصحيحة وأنها محدثة بشكل صحيح. قد تحتاج أيضًا إلى إعادة ترتيب استعلاماتك لتأكيد أن القيم الصحيحة تم تمريرها بشكل صحيح إلى execute.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر