البرمجة

حل مشكلة Warning: mysqli_num_rows() في PHP عند استرجاع النتائج من قاعدة البيانات

عند النظر إلى الشيفرة التي قدمتها، يظهر أن هناك خطأ في الاستخدام الصحيح للدالة mysqli_num_rows() وهو ما يؤدي إلى الإنذار الذي تظهره. دعونا نقوم بفحص الشيفرة لنجد الخطأ ونقوم بتصحيحه.

في البداية، يجب أن تستخدم mysqli_num_rows() على النتيجة ($result)، ليس على الاستعلام ($query). يمكنك تغيير الكود ليكون كالتالي:

php
if(mysqli_num_rows($result) > 0): ?> while($row = mysqli_fetch_assoc($result)): ?> endwhile; ?> else: ?> endif; ?>

الآن، يجب أن تظهر الرسالة بدون أي أخطاء. ولكن يجب عليك التحقق من أن الاستعلام يتم تكوينه بشكل صحيح ويعيد نتائج. يمكنك ذلك عن طريق إضافة var_dump($query) لطباعة الاستعلام للتحقق من صحته.

php
var_dump($query); // يطبع الاستعلام للتحقق من صحته $result = mysqli_query($connect, $query); if ($result === false) { echo mysqli_error($connect); die; } ?>

قد يكون الخطأ الآخر المحتمل في الاستعلام نفسه. تأكد من أن جميع الحقول والجداول المستخدمة في الاستعلام تم تحديدها بشكل صحيح وأنها موجودة في قاعدة البيانات الخاصة بك.

إذا استمرت المشكلة، يفضل استخدام prepared statements لتجنب مشاكل الأمان مثل SQL injection.

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

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

  1. استخدام Prepared Statements:
    لضمان سلامة استعلامات قاعدة البيانات وتجنب هجمات SQL injection، يفضل استخدام prepared statements. يمكنك تعديل الاستعلام بشكل التالي:

    php
    $query = "SELECT * FROM residential WHERE 1=1"; if ($type != "") { $query .= " AND type=?"; } // ... (تكرار العمليات السابقة للشروط الأخرى) $stmt = mysqli_prepare($connect, $query); if ($stmt === false) { echo mysqli_error($connect); die; } // ربط القيم مع المتغيرات في الاستعلام if ($type != "") { mysqli_stmt_bind_param($stmt, "s", $type); } // ... (تكرار العمليات السابقة لربط القيم مع المتغيرات في الاستعلام) mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt);

    هذا النهج يقوم بإنشاء استعلام معقول وآمن دون الحاجة إلى إجراء عمليات تماثل يدوية.

  2. فحص الاتصال بقاعدة البيانات:
    تأكد من أن اتصالك بقاعدة البيانات يتم بشكل صحيح. تأكد من أن المتغير $connect يحتوي على اتصال صحيح.

  3. التحقق من وجود الجدول والحقول:
    تأكد من أن الجدول residential والحقول المستخدمة في الاستعلام موجودة في قاعدة البيانات الخاصة بك.

  4. التحقق من القيم المرسلة:
    تحقق من أن القيم التي تتم إرسالها للشيفرة تكون صحيحة وتتوافق مع نوع البيانات المتوقع.

  5. تحسين أداء الكود:
    قم بتحسين أداء الكود بتجنب استخدام الدوال المهمة مثل mysqli_fetch_assoc() داخل حلقة الكود. يمكنك استخدام fetch_all() لاستخراج جميع النتائج دفعة واحدة.

  6. تحسين تنسيق الشيفرة:
    قم بتنظيم الشيفرة بشكل جيد لتحسين قراءتها وصيانتها على المدى الطويل.

باتباع هذه النصائح، يمكنك تحسين كفاءة الشيفرة الخاصة بك وتجنب مشكلات الأمان المحتملة.

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

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

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

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