"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يؤدي بيان PHP PDO المجهز إلى ظهور خطأ \"رقم معلمة غير صالح\"؟

لماذا يؤدي بيان PHP PDO المجهز إلى ظهور خطأ \"رقم معلمة غير صالح\"؟

تم النشر بتاريخ 2025-01-18
تصفح:850

Why Does My PHP PDO Prepared Statement Throw an \

خطأ في رقم المعلمة غير صالح في PHP PDO

عند محاولة تنفيذ عبارة معدة باستخدام PDO، قد تواجه الخطأ "SQLSTATE[HY093 ]: رقم المعلمة غير صالح." تنشأ هذه المشكلة بسبب الاستخدام غير الصحيح لعلامات المعلمات.

تستخدم الوظيفة add_persist المقدمة العبارة المعدة التالية:

INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash

عند ربط قيم المعلمات باستخدام طريقة التنفيذ () ، فإن الوظيفة يستخدم القيم التالية:

["user_id" => $user_id, "hash" => $hash, "expire" => $future]

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

سيكون الرمز المصحح هو:

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";

$stm = $db->prepare($sql);

$stm->execute(
    array("user_id" => $user_id, 
          "hash" => $hash, 
          "expire" => $future,
          "hash2" => $hash)
);

تضمن المعلمة الإضافية :hash2 عدم وجود علامات معلمات مكررة في العبارة المعدة، مما يؤدي إلى حل الخطأ.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3