PHP SQL查询错误消息

时间:2011-02-23 11:05:41

标签: php mysql sql

我正在编写教程并完全复制下面的代码,但是我收到以下错误消息。任何想法语法有什么问题?

  

数据库查询失败:你有一个   SQL语法错误;检查   与您的MySQL对应的手册   用于正确语法的服务器版本   在第2行“BY位置ASC”附近使用

function get_pages_for_subject($subject_id, $public = true) {
            global $connection;
            $query = "SELECT * FROM pages WHERE subject_id = .$subject_id.";
            if ($public) {
                $query .= "AND visible = 1 ";
            }
            $query .= "ORDER BY position ASC";
            $page_set = mysql_query($query, $connection);
            confirm_query($page_set);
            return $page_set;
            }

3 个答案:

答案 0 :(得分:0)

你可能已经从中抽象出了PHP。

打印$query会显示$subject_id可能不是您认为的那样。 另外,您的SQL注入预防在哪里?

答案 1 :(得分:0)

请强制$subject_id是整数值或用引号将其包装出来:

$subject_id = (int)$subject_id; before your $query .= "WHERE subject_id = {$subject_id} ";

$query .= "WHERE subject_id = '{$subject_id}' ";

这应该有效。问题是$subject_id值会破坏您的查询。

小建议:在这里实施一些安全性,你应该防止SQL注入方案。

答案 2 :(得分:0)

您应该反引所有字段名称。像

`visible` = 1

ORDER BY `position`

等等,确保没有任何与保留的MySQL字冲突(我正在考虑“位置”这是一个字符串函数)。