( ̄o ̄) . z Z683 2024-03-23 22:02 采纳率: 30%
浏览 7
已结题

You have an error in your SQL syntax;

数据库操作失败: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',)' at line 1


<?php
// 数据库连接参数
$servername = "xunlianshoutao.com"; 
$username = 'fjl';
$dbpassword = 'fjl111';
$dbname = 'xunlianshoutao';
$tablename = 'userinfo';

// 从 $_GET 获取用户输入的电话号码和密码
$phonenumber = $_GET['phonenumber'];
$password = $_GET['password'];


// 返回的数据对象
$res = array('error' => false);

// 创建数据库连接
$conn = mysqli_connect($servername, $username, $dbpassword, $dbname);

// 检查连接是否成功
if (!$conn) {
    $res['error'] = true;
    $res['message'] = "连接失败:".mysqli_connect_error();
} else {
    // 构建 SQL 插入语句
    $sql='INSERT INTO $tablename(phonenumber,passsword) VALUES ('.$phonenumber.','.$password.')';
    //$sql = 'INSERT INTO userinfo (phonenumber, password) VALUES ('. mysqli_real_escape_string($conn, $phonenumber). ', '. mysqli_real_escape_string($conn, $password). ')';

// 执行 SQL 语句
$result = mysqli_query($conn, $sql);

// 检查查询结果
if (!$result) {
    die("数据库操作失败: ". mysqli_error($conn));
}

    // 执行 SQL 语句
    if ($conn->query($sql) === TRUE) {
        $res['error'] = false;
        $res['message'] = "用户数据插入成功";
    } else {
        $res['error'] = true;
        $res['message'] = "用户数据插入失败: ". $conn->error;
    }
}

// 关闭数据库连接
$conn->close();

// 将结果以 JSON 格式输出
echo json_encode($res);
?>
  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-23 22:02
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题: 数据库操作失败: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',)' at line 1 给出的代码中有哪些问题? 回答:
    1. SQL 插入语句中,passsword 应该是 password ,这是拼写错误;
    2. SQL 插入语句中,括号内没有填写需要插入数据的字段,应该为 INSERT INTO $tablename(phonenumber, password) VALUES ('$phonenumber','$password')
    3. 在执行 SQL 语句之前,通过 $sql 构建 SQL 插入语句,但在实际执行 SQL 语句时,又重新执行了一次 $conn->query($sql),应该只执行一次 $result = mysqli_query($conn, $sql)
    4. 执行 SQL 语句之后,通过 $conn->query($sql) === TRUE 来判断是否执行成功,但同样的执行结果已经在 $result 中保存,可以通过 if ($result) 来判断是否执行成功;
    5. SQL 插入语句中的变量 $phonenumber$password 没有做安全处理,有 SQL 注入的风险,可以使用 mysqli_real_escape_string() 进行转义。 正确的代码:
    <?php
    // 数据库连接参数
    $servername = "xunlianshoutao.com";
    $username = "fjl";
    $dbpassword = "fjl111";
    $dbname = "xunlianshoutao";
    $tablename = "userinfo";
    // 从 $_GET 获取用户输入的电话号码和密码
    $phonenumber = $_GET['phonenumber'];
    $password = $_GET['password'];
    // 返回的数据对象
    $res = array('error' => false);
    // 创建数据库连接
    $conn = mysqli_connect($servername, $username, $dbpassword, $dbname);
    // 检查连接是否成功
    if (!$conn) {
        $res['error'] = true;
        $res['message'] = "连接失败:" . mysqli_connect_error();
    } else {
        // 构建 SQL 插入语句
        $sql = "INSERT INTO $tablename(phonenumber, password) VALUES ('" . mysqli_real_escape_string($conn, $phonenumber) . "', '" . mysqli_real_escape_string($conn, $password) . "')";
        // 执行 SQL 语句
        $result = mysqli_query($conn, $sql);
        // 检查查询结果
        if (!$result) {
            die("数据库操作失败:" . mysqli_error($conn));
        } else {
            // 判断执行结果是否成功
            if ($result) {
                $res['error'] = false;
                $res['message'] = "用户数据插入成功";
            } else {
                $res['error'] = true;
                $res['message'] = "用户数据插入失败:" . $conn->error;
            }
        }
        // 关闭数据库连接
        $conn->close();
        // 将结果以 JSON 格式输出
        echo json_encode($res);
    }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日

悬赏问题

  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统
  • ¥100 rtmpose姿态评估
  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,
  • ¥15 centos7系统下abinit安装时make出错