Mysql按错误CI排序

时间:2016-10-07 23:57:47

标签: php mysql codeigniter

我正在从数据库中提取数据后对其进行排序,但在我的查询执行时似乎存在某种类型的错误。我在我的php框架中使用了codeign。

这是错误

错误号码:1064

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在' ORDER BY' ban_created_at'附近使用。 ASC'在第1行

ORDER BY' ban_created_at' ASC

文件名:../ application / models / Infractions_model.php

行号:33

以及相应的脚本(Infractions_Model)

    function fetch_infractions($filter = null, $direction = null){
        $query = "SELECT * FROM 'user_infractions', 'user' 
                    WHERE 'user_infractions'.'user_id' = 'user'.'user_id'
                    AND 'user_infractions'.'ba_is_active' != '0'";
        if ($filter != null) {
            if ($filter == 'age') {
                $filter ='ban_created_at';
                switch ($direction) {
                    case 'ASC':
                        $dir = 'ASC';
                        break;
                    case 'DESC':
                        $dir = 'DESC';
                        break;
                    default:
                        $dir = 'ASC';
                }
            }
        } else {
            $dir = 'ASC';
        }
$query = "ORDER BY 'ban_created_at' " . $dir;
/*Line 33*/ $result = $this->db->query($query, array($dir));

if ($result) {
    return $result;
}else{
    return false; 
}
}

3 个答案:

答案 0 :(得分:0)

在你的错误中

'ORDER BY 'ban_created_at' ASC'
          ^              ^ 

这样做

$query = "ORDER BY ban_created_at "."$dir";

switch条件来自IF条件最适合

答案 1 :(得分:0)

您的代码:

$query = "ORDER BY 'ban_created_at' " . $dir;
/*Line 33*/ $result = $this->db->query($query, array($dir));

尝试波纹管校正码:

$query .= " ORDER BY ban_created_at " . $dir;
/*Line 33*/ $result = $this->db->query($query);

首次初始化$query变量$query = ""; 但第二次初始化$query变量$query = "";

所以,正确的是

$query = "query like this";
$query .= "order by like this";

答案 2 :(得分:0)

查看您的代码,我想知道您是否在此字段名称ba_is_active上出现拼写错误,它应该是ban_is_active