围绕LIMIT的语法错误

时间:2011-03-31 12:19:41

标签: mysql limit

我正在开发PHP培训课程,我认为mysql语法已经过时了。这是函数

function get_subject_by_id($subject_id) {
    global $connection;
    $query = "SELECT * ";
    $query .= "FROM subjects ";
    $query .= "WHERE id=" . $subject_id ." ";
    $query .= "LIMIT 1";
    $result_set = mysql_query($query, $connection);
    confirm_query($result_set);
    if ($subject = mysql_fetch_array($result_set)) {
        return $subject;
    } else { 
            return NULL;
    }
}

我收回了这个错误: 数据库查询失败:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“LIMIT 1”附近使用正确的语法

我不确定我在这里做错了什么。任何知道语法可能已经改变的人的任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

$query = "SELECT *
          FROM subjects
          WHERE id = $subject_id 
          LIMIT 1";

查询失败,因为$ subject_id为空。

SELECT * FROM subjects WHERE id= LIMIT 1

答案 1 :(得分:0)

显然$subject_id导致了问题,请检查值是否正确传递。

答案 2 :(得分:0)

两个猜测:

  • 您没有引用/ escape $subject_id,其中包含字符串或非整数字符(例如FALSENULL或空字符串)。
    即使这不是原因,也会使您的脚本容易受到SQL injection
  • 的攻击
  • 您正在使用Mac进行编码并错误地插入了不可破坏的空间