بيان 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);
فيما يتعلق باستفساراتك المحددة:تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3