我正在从数据库中提取数据后对其进行排序,但在我的查询执行时似乎存在某种类型的错误。我在我的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;
}
}
答案 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