يقول أن لديك خطأ في بناء جملة SQL الخاص بك

[ad_1]

<?php
include 'connect.php';
$id = $_GET['updateid'];
if (isset($_POST['submit'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $password = $_POST['password'];

    $sql = "UPDATE `personal info` SET id=$id, name='$name', email='$email', phone='$phone', password='$password' WHERE id=$id";
    $result = mysqli_query($con, $sql);

    if ($result) {
        echo "updated successfully";
        // header('location:display.php');
    } else {
        die(mysqli_error($con));
    }
}
?>

ما حاولت:

لقد جربت هذا ولكني قلت أيضًا “لديك خطأ في بناء جملة SQL الخاص بك؛ تحقق من الدليل الذي يتوافق مع إصدار خادم MariaDB الخاص بك لمعرفة بناء الجملة الصحيح لاستخدامه بالقرب من ” في السطر 1″ لا أعرف ماذا أفعل

<?php
include 'connect.php';
$id = $_GET['updateid'];
if (isset($_POST['submit'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $password = $_POST['password'];

    $sql = "UPDATE `personal info` SET Name='$name', Email='$email', Phone='$phone', assword='$password' WHERE id=$id";
    $result = mysqli_query($con, $sql);

    if ($result) {
        echo "updated successfully";
        // header('location:display.php');
    } else {
        die(mysqli_error($con));
    }
}
?>

الحل 1

لا تفعل ذلك من هذا القبيل! لا تقم أبدًا بتسلسل السلاسل لإنشاء أمر SQL. إنه يتركك مفتوحًا على مصراعيه لهجوم حقن SQL غير المقصود أو المتعمد والذي يمكن أن يدمر قاعدة البيانات بأكملها. استخدم دائمًا الاستعلامات ذات المعلمات بدلاً من ذلك.

عندما تقوم بتسلسل السلاسل، فإنك تسبب مشاكل لأن SQL يتلقى أوامر مثل:

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'

يؤدي الاقتباس الذي أضافه المستخدم إلى إنهاء السلسلة فيما يتعلق بـ SQL وستواجه مشاكل. ولكن يمكن أن يكون أسوأ. إذا أتيت وكتبت هذا بدلاً من ذلك: “x’;DROP TABLE MyTable;–” فسيتلقى SQL أمرًا مختلفًا تمامًا:

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'

التي ترى SQL أنها ثلاثة أوامر منفصلة:

SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';

اختيار صالح تمامًا

SQL
DROP TABLE MyTable;

أمر “حذف الجدول” صالح تمامًا

SQL
--'

وكل شيء آخر هو تعليق.
وهكذا يحدث ذلك: تحديد أي صفوف متطابقة، وحذف الجدول من قاعدة البيانات، وتجاهل أي شيء آخر.

لذلك استخدم دائمًا الاستعلامات ذات المعلمات! أو كن مستعدًا لاستعادة قاعدة بياناتك من النسخة الاحتياطية بشكل متكرر. أنت تقوم بأخذ نسخ احتياطية بانتظام، أليس كذلك؟

تسهل PHP تضمين المعلمات مع الاستعلامات: PHP: pg_query_params – يدوي[^]

[ad_2]

コメント

タイトルとURLをコピーしました