如何调试MySQL SQL语句中的语法错误?

时间:2017-05-03 05:45:13

标签: php sql

我的代码显示以下错误,我不明白如何纠正错误:

  

你的sql语法有错误,请检查手册对应你的mysql服务器版本,以便在第1行附近的')'使用正确的语法

$query="insert into subjective_result(marks,roll_no)values($marks,$roll)";     
mysql_query($query)or die(mysql_error());

2 个答案:

答案 0 :(得分:2)

因为您没有转义输入,所以

$query="insert into subjective_result(marks,roll_no)values('$marks','$roll')";     

无论如何,这不是最好的方法,你必须使用预备语句和包装器,如PDO。如果您连接自己的查询,则可能会遇到SQL注入漏洞。

像这样的东西

    // didn't test it
    $stmt = $db->prepare('insert into subjective_result(marks,roll_no)values(:marks,:roll_no)');
    $stmt->bindValue(":marks", $marks);
    $stmt->bindValue(":roll_no", $roll_no);

    if ($stmt->execute()) {
      //code here
    }

答案 1 :(得分:-1)

试试这个:

$query="insert into subjective_result(`marks`,`roll_no`)values(".$marks.",".$roll.")";

建议始终使用“`”(反引号字符,通常是Tab键上的键)将列名包装在SQL语句中。

此外,$marks$roll是变量,它们不能像普通文本一样插入字符串中,因此您必须将它们与字符串查询连接起来。