我收到错误无法更新数据:您的SQL语法中有错误

时间:2016-03-01 20:51:37

标签: php mysqli

拜托,您可以帮我修复代码,以便我的SQL语句能够正常工作。我收到了这个错误:

  

无法更新数据:SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在“INSERT INTO studentUoB NumberFirst NameLast Name,”提案“附近使用正确的语法1

我的代码如下:

if (isset($_POST['submit'])) {
    $database = mysqli_connect("localhost", "root", "", "university"); //connection to database
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: ";
    }
    $uob_number = mysqli_real_escape_string($database, $_POST['uob_number']);
    $first_name = mysqli_real_escape_string($database, $_POST['first_name']);
    $last_name = mysqli_real_escape_string($database, $_POST['last_name']);
    $proposal = mysqli_real_escape_string($database, $_POST['proposal']);
    $qualification_normal = mysqli_real_escape_string($database, $_POST['qualification_normal']);
    $qualification_masters = mysqli_real_escape_string($database, $_POST['qualification_masters']);
    $faculty = mysqli_real_escape_string($database, $_POST['faculty']);
    $sql = "​INSERT INTO `student`(`UoB Number`, `First Name`, `Last Name`, `Proposal`, `Qualification_Normal`, `Qualification_Masters`, `Faculty`) VALUES ([$uob_number],[$first_name],[$last_name],[$proposal],[$qualification_normal],[$qualification_masters],[$faculty])";
    $retval = mysqli_query($database,$sql);

    if (!$retval) {
        die('Could not update data: ' . mysqli_error($database));
    }
    echo "Updated data successfully\n";
    mysqli_close($database); //closes connection
}

2 个答案:

答案 0 :(得分:1)

您的查询中存在大量语法错误:

$sql = "​INSERT [..snip...] VALUES ([$uob_number],[$first_name],[$last_name],[$proposal],[$qualification_normal],[$qualification_masters],[$faculty])";
                                   ^-----------^

MySQL不使用[]来分隔值。它使用'

答案 1 :(得分:0)

<强>问题:

您将$ _POST变量(使用方括号)的数组索引与您为存储转义数据而创建的新PHP变量混淆。

<强>解决方案:

更改以下行:

$sql = "​INSERT INTO `student`(`UoB Number`, `First Name`, `Last Name`, `Proposal`, `Qualification_Normal`, `Qualification_Masters`, `Faculty`)
VALUES ([$uob_number],[$first_name],[$last_name],[$proposal],[$qualification_normal],[$qualification_masters],[$faculty])";

$sql = "​INSERT INTO `student`(`UoB Number`, `First Name`, `Last Name`, `Proposal`, `Qualification_Normal`, `Qualification_Masters`, `Faculty`)
VALUES ('$uob_number','$first_name','$last_name','$proposal','$qualification_normal','$qualification_masters','$faculty')";

请注意,VALUES子句中的括号已被删除,并替换为单引号。