PHP - 由于双引号MYSQL查询而出错

时间:2013-08-13 05:54:46

标签: php sql double limit

 <?php
   $query = "SELECT * ";
   $query .= "FROM subjects ";
   $query .= "WHERE id='" . $subject_id ."' ";
   $query .= "LIMIT 1";
 ?>

问题原因在于:       错误:“数据库查询失败:您的SQL语法中有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行的'LIMIT 1'附近使用正确的语法”

那么为什么......尽管语法是正确的。鉴于我的错误?!

3 个答案:

答案 0 :(得分:0)

错误消息来自执行您问题中未显示的一行代码。

一个显而易见的可能性是此代码生成的字符串值未传递给MySQL。另一种可能性是$subject_id包含一个被解释为SQL文本的字符串值,而$query不包含您认为它包含的内容。还有很多其他的可能性。

对于这样的调试问题,我们确实需要确定实际抛出错误的代码行。 (在你的情况下,它将调用mysql_,mysqli或PDO执行或准备函数或方法。)

您可以做的是在紧接引发错误的行之前的行上添加传递给MySQL的ACTUAL SQL文本的echovar_dump

例如,如果在此代码之后,在解析或执行调用之前的一行代码修改$query

,您将收到此错误消息
$query .= " LIMIT 1";

这将在查询中添加第二个LIMIT子句,该子句无效,并且会抛出相同的错误。

重申:你问题中发布的代码行不会引发错误。您发布的代码行只是将字符串值赋给变量。 (这可能是传递给MySQL的字符串值,但我们在代码中的任何位置都没有看到。)

答案 1 :(得分:-1)

您正在使用'subject_id'可能是int格式存在问题因此请使用subject_idLimit 1替代Limit 0,1

<?php
   $query = "SELECT * ";
   $query .= "FROM subjects ";
   $query .= "WHERE id=" . $subject_id;
   $query .= "LIMIT 0,1";
 ?>

答案 2 :(得分:-4)

您不需要连接可以使用的变量

 <?php
 $query = "SELECT * ";
 $query .= "FROM subjects ";
 $query .= "WHERE id='$subject_id' ";
 $query .= "LIMIT 1";
  ?>

你的变量后面还有两个分号,如果你的变量是一个整数,它也不需要用单引号。