SQL语法错误。 check对应MYSQL服务器

时间:2014-07-30 04:27:51

标签: php mysql sql sql-server

我尝试做一个可以将数据插入数据库的表单。在我插入虚拟数据后,它就会出来。

  

您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以获得正确的语法

这个错误让我陷入困境。我的数据库没有插入任何记录

<?php

    $db = "assignment";
    $table = "column";

    $conn = mysqli_connect("localhost","root","");
    mysqli_select_db($conn,$db);

        $Title = $_POST['title'];
        $Author = $_POST['author'];
        $Country = $_POST['country'];
        $Date = $_POST['date'];
        $Abstract = $_POST['abstract'];
        $Problem = $_POST['rproblem'];
        $Aim = $_POST['raim'];
        $Objectives = $_POST['robjective'];
        $Type = $_POST['rstudies'];

    if(isset($_POST['rmethod'])){
        $method = implode(",",$_POST['rmethod']);
    }else{
        $method = "";
    }

    $sql = "INSERT INTO '$table' (title,author,country,date,abstract,rproblem,raim,robjective,rstudies,rmethod)
            VALUES ('$Title','$Author,'$Country','$Date','$Abstract','$Problem','$Aim','$Objectives','$Type','$method')";

    mysqli_query($conn,$sql);

    if (!mysqli_query($conn,$sql)){
        die('Error: ' . mysqli_error($conn));
    }else{
        echo "Data Added";
    }
    mysqli_close($conn);

    ?>

3 个答案:

答案 0 :(得分:2)

您在使用reserved word时将$table变量设置在单引号内,column用于表名$table = "column";

在它周围使用反引号,如下所示:

INSERT INTO `$table`

要么这样做,要么给你的桌子另一个名字。


此处还缺少引用'$Author,'$Author',

也是如此

此外,您可以删除mysqli_query($conn,$sql);,因为您已经在使用
if (!mysqli_query($conn,$sql))


<强>脚注:

您目前的代码向SQL injection开放。我强烈建议您使用prepared statementsPDO prepared statements

答案 1 :(得分:0)

试试这个

$sql = "INSERT INTO $table (title,author,country,date,abstract,rproblem,raim,robjective,rstudies,rmethod)
            VALUES ('$Title','$Author','$Country','$Date','$Abstract','$Problem','$Aim','$Objectives','$Type','$method')";

表名或列名必须用反向标记(`)括起来,而不是用单引号或双引号括起来。否则不要将它们包装起来。只需像上面那样尝试。如果你使用保留关键字作为表名或列名,那么你必须将它们包含在后面。它最好不要使用任何保留关键字。所以如果你可以更改名称,然后它将是您的最佳选择。您在查询中使用两个保留关键字。您的表名和日期列。两者都是关键字

您可以check my answer here了解更多

答案 2 :(得分:0)

关注您在'

上遗漏$author的其他答案
$sql = "INSERT INTO `$table` (title,author,country,date,abstract,rproblem,raim,robjective,rstudies,rmethod)
            VALUES ('$Title','$Author','$Country','$Date','$Abstract','$Problem','$Aim','$Objectives','$Type','$method')";

还可以更好地用来替换

mysqli_query($conn,$sql);
if (!mysqli_query($conn,$sql)){

$result = mysqli_query($conn,$sql);
if (!$result){

否则您的查询将执行两次。