خطأ في رقم المعلمة غير صالح في 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