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

كيفية حل ترتيب المعلمات غير الصحيح في تحديثات قاعدة بيانات بيان PHP المجهزة؟

تم النشر بتاريخ 2024-11-08
تصفح:982

How to Resolve Incorrect Parameter Order in PHP Prepared Statement Database Updates?

بيان PHP المعد لتحديثات قاعدة البيانات

تتمحور هذه المناقشة حول الاستخدام السليم للبيانات المعدة في PHP لمنع الثغرات الأمنية مثل حقن SQL. الغرض من مقطع التعليمات البرمجية المعني هو تحديث جدول قاعدة بيانات بحقل واحد باستخدام عبارة مُعدة.

في التعليمات البرمجية المقدمة، تستخدم طريقة التحديث () في ملف class.Scripts.inc إعدادًا مُعدًا بيان في محاولة لتحديث جدول تفريغ البيانات. ومع ذلك، التنفيذ غير ناجح بسبب ترتيب المعلمات غير الصحيح أثناء أسلوب bind_param(). يربط التعليمة البرمجية الحالية المعلمات بترتيب $id و$content، بينما تتوقع عبارة SQL وجودها بالترتيب المعاكس، مما يؤدي إلى تعريف سجل غير صحيح وعدم تأثر أي صفوف.

يصحح التعليمة البرمجية المصححة أدناه هذا الأمر خطأ عن طريق ربط المعلمات بالترتيب الصحيح وتوفير معالجة إضافية للأخطاء:

$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?");
/* Always check whether the prepare() succeeded */
if ($stmt === false) {
    trigger_error($this->mysqli->error, E_USER_ERROR);
    return;
}

$id = 1;
/* Bind our params */
/* Bind variables in the same order as SQL params */
$stmt->bind_param('si', $content, $id);

/* Set our params */
/* No escaping needed when using prepared statements */
$content = $_POST['content'] ?: '';

/* Execute the prepared Statement */
$status = $stmt->execute();
/* Always check whether the execute() succeeded */
if ($status === false) {
    trigger_error($stmt->error, E_USER_ERROR);
}

printf("%d Row inserted.\n", $stmt->affected_rows);
فيما يتعلق باستفساراتك المحددة:

    لقد حان وقت ظهور رسالة "0 صفوف مدرجة" التي واجهتها إلى ترتيب المعلمة المعكوس. تم ربط معلمات المعرف والمحتوى بترتيب غير صحيح، مما أدى إلى عدم مطابقة جملة WHERE لأي صفوف.
  1. عند تحديث جدول، من المقبول تعديل الحقول التي تحتاجها فقط. ستبقى الأعمدة الأخرى في الجدول دون تغيير.
بيان الافراج أعيد طبع هذه المقالة على: 1729512196 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3