第5行的MySQL语法错误(但那里附近没有mysql的东西)

时间:2011-02-04 16:54:26

标签: php sql mysql mysql-error-1064

所以,我假设它与我试图插入数据库的其中一个变量中的内容有关。但看了之后(print_r($ var);),它们看起来很好。

我不知道为什么我会因为地狱错误而变得模糊:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第5行的''附近使用正确的语法

这是从第0行到没有更多php / mysql内容的代码:

$o = $_REQUEST["order"]; // this is line 5!!!!!!!!!!!!!!!!!!!!!

$a=$_REQUEST["amount"];
$f=$_REQUEST["freight"];

    $connection =
    mysql_connect(".com","2345687654","jljljkl1") or die(
    mysql_error());
    if($connection)
    {
        mysql_select_db("dba") or die(mysql_error());

        mysql_query("INSERT INTO mysql_9269_dba.o 
                                   (amount, freight, sessionid) 
                                 VALUES 
                                   ('".$a."', '".$f."', '".$o."'") or die(mysql_error());

                    // get their email..

        $result = mysql_query("SELECT email 
                                             FROM cart 
                                            WHERE sessionid = '$o'") or die(mysql_error());
        while($row = mysql_fetch_array($result)){
          $email = $row["email"];
        }

我不知道该怎么做。语法看起来很正常,我已经检查了插入到db中的所有变量的值,它们很好。任何帮助都表示赞赏

4 个答案:

答案 0 :(得分:3)

假设缺少引用只是你从中获取真实凭据的红色鲱鱼,请记住MySQL错误将在MySQL语句的第5行,而不是PHP。鉴于此,您在MySQL语句的末尾错过了一个结束括号,即第5行。

应该是:

VALUES 
    ('".$a."', '".$f."', '".$o."')") or die(mysql_error());

请注意额外的backet以关闭VALUES列表。

另外请记住,如果$ a $ f或$ o包含单引号或任何其他令人讨厌的内容,则此声明可能会死亡。您可能希望在此时查找有关防止“SQL注入”攻击的建议。

答案 1 :(得分:2)

我建议改为使用sprintf

$query = sprintf("INSERT INTO mysql_9269_dba.o 
                    (amount, freight, sessionid) 
                  VALUES 
                    ('%s', '%s', '%s')",
                  mysql_real_escape_string($_REQUEST["amount"]),
                  mysql_real_escape_string($_REQUEST["freight"]),
                  mysql_real_escape_string($_REQUEST["order"]));

mysql_query($query) or die(mysql_error());

它将变量处理与查询构建分开,从而更容易查看语法错误。

答案 2 :(得分:0)

除了MySQL错误之外,你还错过了......上的引号。

mysql_connect(".com","2345687654,"jljljkl1") or die(

...线。 : - )

即:应该是:

mysql_connect(".com", "2345687654", "jljljkl1") or die(

答案 3 :(得分:0)

您在SQL语句中缺少右括号:

        mysql_query("INSERT INTO mysql_9269_dba.o 
                               (amount, freight, sessionid) 
                             VALUES 
                               ('".$a."', '".$f."', '".$o."')") or die(mysql_error());

我在$ o之后直接添加了它。“''