البرمجة

تأكيد وجود السجل قبل الإدخال في قاعدة البيانات

لديك قاعدة بيانات SQL وترغب في التحقق مما إذا كان السجل موجودًا بالفعل في الجدول قبل إدخال بيانات جديدة. تبدو عملية الاختيار (SELECT) التي قمت بها صحيحة، ولكن هناك بعض النقاط التي يجب تصحيحها في الكود.

أولاً وقبل كل شيء، يبدو أنك تستخدم دالة mysql_num_rows() التي تنتمي إلى الاصدارات القديمة من PHP MySQL، في حين أنك تستخدم حالياً PDO للتفاعل مع قاعدة البيانات. لذا، يجب عليك استخدام الدوال المناسبة لـ PDO.

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

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

إليك كيف يمكنك تصحيح الأمور:

php
// استعلام للتحقق مما إذا كانت الكلمة موجودة بالفعل في الجدول $checkQuery = $db->prepare("SELECT COUNT(*) AS rowCount FROM searchtable WHERE word = :title"); $checkQuery->execute(array(':title' => $title)); $rowCount = $checkQuery->fetch(PDO::FETCH_ASSOC); if ($rowCount['rowCount'] == 0) { // إذا لم تكن الكلمة موجودة، يمكنك إدراج البيانات $sql = "INSERT INTO searchtable (word, position, count) VALUES (:word, :position, :count)"; $statement = $db->prepare($sql); $statement->execute(array( ':word' => $title, ':position' => $fileNum, ':count' => $titleVal )); } else { // إذا كانت الكلمة موجودة بالفعل، يمكنك هنا إجراء أي عمليات إضافية echo "الكلمة موجودة بالفعل في الجدول"; }

تذكر أنه يجب أن يتم استبدال :title بالقيمة الفعلية للكلمة التي ترغب في البحث عنها. هذا الكود سيتحقق مما إذا كانت الكلمة موجودة بالفعل في الجدول، وإذا كانت غير موجودة، فسيتم إدراج السجل الجديد.

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

بالطبع، إليك المزيد من المعلومات حول كيفية عمل الكود وبعض النقاط الإضافية التي يمكن أن تكون مفيدة:

  1. استخدام PDO: استخدمت PDO (PHP Data Objects) في الكود الذي قدمته، وهي واحدة من الطرق الأكثر أمانًا وفعالية للتفاعل مع قواعد البيانات من خلال PHP. تسمح PDO بتجنب مشكلات أمان مثل هجمات حقن SQL (SQL injection) عن طريق استخدام البيانات المرتبطة (bound parameters) والتي تمنع البيانات المستخدمة من التفاعل المباشر مع الاستعلام.

  2. استخدام الاستعلامات المُعدة مسبقًا (Prepared Statements): استخدمت استعلامات معدة مسبقًا في PDO مما يزيد من أمان التطبيق ويسهل قراءته. بفضل الاستعلامات المعدة مسبقًا، يمكنك تحديد المعلمات والبيانات المرتبطة مسبقًا واستخدامها في تنفيذ الاستعلامات دون الحاجة للقلق بشأن علامات التنصيص أو تنسيق البيانات.

  3. التحقق من وجود السجل قبل الإدخال: قبل إدخال بيانات جديدة إلى الجدول، يقوم الكود بالتحقق مما إذا كانت الكلمة المراد إدخالها موجودة بالفعل في الجدول. هذا يسمح بتجنب إضافة سجلات مكررة.

  4. استخدام الرسائل التوضيحية: في الكود، تم استخدام رسائل توضيحية لتبليغ المستخدم في حال كانت الكلمة موجودة بالفعل في الجدول. هذا يجعل التطبيق أكثر وضوحًا للمستخدمين بشأن ما يحدث.

  5. تجنب استخدام دوال مهملة: استخدمت PDO بدلاً من الدوال المهملة مثل mysql_num_rows() والتي قد تكون غير آمنة وتم الاستغناء عنها في إصدارات PHP الحديثة.

  6. تطبيق أسلوب العمل الجيد: الكود يتبع أسلوب العمل الجيد مثل تقسيم المهام إلى وظائف صغيرة قابلة لإعادة الاستخدام، وتوثيق الشفرة لسهولة فهمها للمطورين الآخرين أو للمستقبل.

بهذه الطريقة، يمكنك ضمان أمان واستقرار تطبيقك وتفادي المشاكل المحتملة مثل إضافة سجلات مكررة أو ثغرات أمان.

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

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

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

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