اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته.

في php فيما أقل كان عندما أعمل insert لعناصر معينة في العامودين test1 , test2 والعامودين لها المفتاح unique كان لا يتم إدخال القيم وعندما تتكرر هذه القيم لا يُدخلها وكانت نتيجة هذه الكود تعطي 0

$check = $stmt->rowCount();

وكان لا يعطيني أي error يوقف الكود عن العمل فكنت أتحقق إذا كانت نتيجة $check == 0 معناها إظهار للمستخدم رسالة خطأ وغير ذلك أظهر رسالة نجاح وفقط

ولكن في php 8 أصبح عندما أدخل قيمة مكررة في عامود unique يعطيني في الconsole الخاص بمتصفح جوجل كروم على linux ubuntu 

POST http://localhost/souly/message 500 (Internal Server Error)

وفي متصفح جوجل كروم ويندوز يظهر هذه الرسالة

Duplicate entry 'غير ذلك' for key 'problem'

ويوقف الكود عن العمل فكيف أستطيع عمل check عن إذا كانت عملية الinsert نجحت أم لا بدون توقف الكود أو إظهار أخطاء؟

Recommended Posts

  • 0
نشر

مرحباً @محمود رضا موسى

هناك عدة طرق في الحقيقة , يمكنك بالأصل أن لا تنفذ التعليمة أساساً إذا كان هناك قيم مكررة و ذلك بعمل query للتأكد إذا كانت هذه القيم موجودة بالبداية ثم إضافتها إن لم تكن موجودة :

SELECT * FROM Table WHERE test1 = "Some Value" AND test2 = "Some Value 2"

فإذا كان عدد أسطر ناتج التعليمة على سبيل المثال في الأعلى (rowCount) يساوي الصفر , إذاً القيم غير مكررة و يمكنك إضافتها .

الحل الثاني : باستخدام تعليمة ال try :

try {
    //تعليمة الإضافة
} catch (Exception $e) {
    // طباعة رسالة الخطأ 
}

 

تحياتي .

  • 0
نشر
بتاريخ 3 دقائق مضت قال محمد وسيم الحبش:

مرحباً @محمود رضا موسى

هناك عدة طرق في الحقيقة , يمكنك بالأصل أن لا تنفذ التعليمة أساساً إذا كان هناك قيم مكررة و ذلك بعمل query للتأكد إذا كانت هذه القيم موجودة بالبداية ثم إضافتها إن لم تكن موجودة :


SELECT * FROM Table WHERE test1 = "Some Value" AND test2 = "Some Value 2"

فإذا كان عدد أسطر ناتج التعليمة على سبيل المثال في الأعلى (rowCount) يساوي الصفر , إذاً القيم غير مكررة و يمكنك إضافتها .

الحل الثاني : باستخدام تعليمة ال try :


try {
    //تعليمة الإضافة
} catch (Exception $e) {
    // طباعة رسالة الخطأ 
}

 

تحياتي .

شكرا لك

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...