Php codeigniter中按desc限制的Mysql查询顺序
我有一个表目标如下Php codeigniter中按desc限制的Mysql查询顺序,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个表目标如下 id | subject | achievement | staff_id 1 Target January 1150000 1 2 Target January 1350000 2 3 Target February 2000
id | subject | achievement | staff_id
1 Target January 1150000 1
2 Target January 1350000 2
3 Target February 20000000 1
4 Target February 23500000 2
5 Target January 1500000 3
我想展示的是在codeigniter中使用sql查询
SELECT * FROM `target` WHERE `staff_id`='$id' ORDER BY 'id' DESC LIMIT 3,1
我曾尝试在codeigniter中使用get where、order by和limit query,但屏幕变为空白
这是模型代码
$id=get_staff_user_id();
$this->db->get_where('target', array('staff_id'=>$id,));
$this->db->order_by('id','desc');
$this->db->limit(3, 1);
$query=$this->db->get();
return $query;
这是控制器代码
$data['target'] = $this->target_model->getAllTarget()->result();
这是查看代码
<?php foreach($targets as $target){
if($total >= floatval($target->achievement)) {
$percent = 100;
} else {
if ($total !== 0) {
$percent = number_format(($total * 100) / $target->achievement, 2);
}
}
echo $percent;
?>
我的代码中的错误在哪里
谢谢您型号:
删除多余的逗号
在控制器中:
将目标更改为它从相同数组名获得的foreach中的目标
在模型中:
删除多余的逗号
在控制器中:
将目标更改为它从相同数组名获得的foreach中的目标
问题是-
get_where()
已经返回了一个DB结果实例-为了解决您的问题,您必须执行以下操作
return $this->db
->select('*')
->from('target')
->where('staff_id', get_staff_user_id())
->order_by('id', 'desc')
->limit(3,1)
->get();
问题是-
get_where()
已经返回了一个DB结果实例-为了解决您的问题,您必须执行以下操作
return $this->db
->select('*')
->from('target')
->where('staff_id', get_staff_user_id())
->order_by('id', 'desc')
->limit(3,1)
->get();
删除额外的逗号
$this->db->get_where('target',array('staff_id'=>$id))代码>在$id之后,并启用错误报告以了解错误。“但是屏幕变为空白”您是指PHP的白色死亡屏幕检查错误日志。“删除额外的逗号$this->db->get_where('target',array('staff_id'=>$id));在$id之后”将无助于@devsiodera,因为像topicstarter那样使用逗号实际上是代码,不会给出解析错误。这只是建议,要知道确切的错误,请启用错误报告。foreach($target as$target
将目标替换为目标,因为您将目标从控制器传递到视图。删除额外的逗号$this->db->get_where('target',array('staff_id'=>$id));
在$id之后并启用错误报告以了解错误。“但是屏幕变为空白”您是指PHP的白色死亡屏幕检查错误日志。删除额外的逗号$this->db->get_where('target',array('staff_id'=>$id));在$id之后”对@DevsiOdedra没有帮助,因为像topicstarter那样使用逗号实际上是代码,不会给出解析错误。这只是建议,要知道确切的错误,请启用错误报告。foreach($target as$target
替换目标到目标,因为您将目标从控制器传递到视图。array('staff_id'=>$id,)
是PHP代码,不会给出解析器错误。.是的,它是有效的,但对于我刚才提到的安全方面,但是控制器上的主要问题是视图上的名称不同。
使用数组('staff_id'=>$id,)
是安全的,因为它会生成“ghost”元素,当您阅读代码array('staff\u id'=>$id,)
时,您可能会在这里看到它。但是我同意使用array('staff\u id'=>$id,)
看起来有点奇怪。。是的@RaymondNijland它看起来很奇怪,谢谢分享:)没关系,如果代码只有一行,比如return$this->db->get\u where('target',array)('staff_id'=>$id));它工作正常array('staff_id'=>$id,)
是PHP代码,不会给出解析器错误。是的,它是有效的,但对于我刚才提到的安全方面,但是控制器方面的主要问题是视图上的名称不同使用array时“是的,它是有效的,但对于安全方面”('staff\u id'=>$id,)
可以安全使用,因为它将生成一个“ghost”元素,当您阅读代码数组时,您可能会在这里看到它('staff\u id'=>$id,)
。但是我同意使用数组('staff\u id'=>$id,)
看起来有点古怪。@RaymondNijland它看起来很古怪,谢谢分享:)没关系,让我觉得奇怪的是,如果代码只有一行,比如return$this->db->get_where('target',array('staff_id'=>$id)),它就正常工作了fine@Vickel-ofc问题在于get\u where()
的行为类似于get()
所以在他的例子中,他基本上执行了两个查询——一个是以员工id为条件的查询——第二个是以order by和limit为条件的查询,但结果是一个错误——因为没有from表(如果选项db_debug
为false
——站点显示为空)oops,我没有看到第二个get(),对不起!@Vickel-ofc这是一个问题,get_where()
的行为类似于get()
,所以在他的例子中,他基本上执行了两个查询,一个是以员工id为条件的查询,另一个是以order by和limit为条件的查询,但会导致一个错误,因为没有from表(如果选项db_debug
为false
-站点显示为空白)oops,我没有看到第二个get(),抱歉!
return $this->db
->select('*')
->from('target')
->where('staff_id', get_staff_user_id())
->order_by('id', 'desc')
->limit(3,1)
->get();