Dikatakan Anda memiliki kesalahan dalam sintaks SQL Anda

pemrograman


<?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));
    }
}
?>

Apa yang saya coba:

Saya mencoba yang ini tetapi juga mengatakan “Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MariaDB Anda untuk sintaks yang tepat untuk digunakan di dekat ” pada baris 1″ tidak tahu apa yang harus dilakukan

<?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));
    }
}
?>

Solusi 1

Jangan lakukan seperti itu! Jangan pernah menggabungkan string untuk membuat perintah SQL. Ini membuat Anda terbuka lebar terhadap serangan SQL Injection yang tidak disengaja atau disengaja yang dapat menghancurkan seluruh database Anda. Selalu gunakan kueri berparameter sebagai gantinya.

Saat Anda menggabungkan string, Anda menimbulkan masalah karena SQL menerima perintah seperti:

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

Kutipan yang ditambahkan pengguna mengakhiri string sejauh menyangkut SQL dan Anda mendapatkan masalah. Tapi itu bisa lebih buruk. Jika saya datang dan mengetik ini: “x’;DROP TABLE MyTable;–” Kemudian SQL menerima perintah yang sangat berbeda:

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

SQL mana yang dilihat sebagai tiga perintah terpisah:

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

SELECT yang benar-benar valid

SQL
DROP TABLE MyTable;

Perintah “hapus tabel” yang valid

SQL
--'

Dan yang lainnya adalah komentar.
Begitu pula: memilih baris yang cocok, menghapus tabel dari DB, dan mengabaikan yang lainnya.

Jadi SELALU gunakan kueri berparameter! Atau bersiaplah untuk sering memulihkan DB Anda dari cadangan. Anda melakukan backup secara teratur, bukan?

PHP memudahkan untuk memasukkan parameter dengan kueri: PHP: pg_query_params – Panduan[^]

コメント

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