[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 行 ” 附近使用的正确语法”idk 该怎么做
<?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';
完全有效的 SELECT
SQL
DROP TABLE MyTable;
完全有效的“删除表”命令
SQL
--'
其他一切都是评论。
它确实如此:选择任何匹配的行,从数据库中删除该表,并忽略其他任何内容。
所以总是使用参数化查询! 或者准备经常从备份恢复数据库。 您确实定期进行备份,不是吗?
PHP 可以轻松地在查询中包含参数: PHP: pg_query_params – 手册[^]
[ad_2]
コメント