为了账号安全,请及时绑定邮箱和手机立即绑定

“检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法”

“检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法”

吃鸡游戏 2023-09-18 16:16:42
<?php    include 'db_connection.php';    $name = $_POST['name'];    $password = $_POST['password'];    $email = $_POST['email'];    $phone = $_POST['phone'];    $conn = OpenCon();    echo "<br><br>Connected Successfully";    $sql = "INSERT INTO 'customer'('customer name','password','email','phone number') VALUES([$name], [$password], [$email], [$phone]);";    if (mysqli_query($conn, $sql)) {        echo "New record created successfully";    } else {        echo "Error: " . $sql . "<br>" . mysqli_error($conn);    }?>这段代码在尝试使用 INSERT 语句时给我错误。我使用 $conn 变量创建了 DBConenction。
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

避免在末尾出现不需要的分号,并从表名中删除单引号。请尝试以下操作。此外,由于您的两个字段之间包含空格,您可以避免使用单引号并使用 `` 反引号。

$sql = "INSERT INTO customer (`customer name`,password, email, `phone number`) VALUES ('$name','$password','$email', '$phone') ";



查看完整回答
反对 回复 2023-09-18
?
森栏

TA贡献1810条经验 获得超5个赞

您的代码的解决方案

我假设你的name、password、email和phone是字符串。


因此它们必须出现在您最终请求中的引号之间,所以


$sql = "INSERT INTO 'customer'('customer name','password','email','phone number') VALUES([$name], [$password], [$email], [$phone]);";

改成


$sql = "INSERT INTO 'customer'('customer name','password','email','phone number') VALUES('[$name]', '[$password]', '[$email]', '[$phone]')";

此外,为了避免 SQL 注入,您应该转义从 POST 请求中获取的字符串,因此您应该替换


$name = $_POST['name'];

$password = $_POST['password'];

$email = $_POST['email'];

$phone = $_POST['phone'];

经过


$name = mysqli_real_escape_string($conn, $_POST['name']);

$password = mysqli_real_escape_string($conn, $_POST['password']);

$email = mysqli_real_escape_string($conn, $_POST['email']);

$phone = mysqli_real_escape_string($conn, $_POST['phone']);

并在建立联系后感动。


更好的解决方案(如果可以的话)

在 PHP 中处理数据库的最佳解决方案是使用准备好的请求,甚至更好:使用像Doctrine这样的 ORM 。它将更加安全可靠。


查看完整回答
反对 回复 2023-09-18
  • 2 回答
  • 0 关注
  • 44 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信