【发布时间】:2015-01-09 14:20:40
【问题描述】:
我正在尝试使用 $this->db->like 过滤行,但它会获取 db 中的所有行。
我尝试使用普通查询:
型号:
function getPostsByTag(){
$query = "SELECT * FROM mutamba_posts WHERE post_text LIKE '%Astrix%'";
$sql = $this->db->query($query);
if($sql->num_rows > 0 ){
return $sql->result();
}
}
控制器:
function tag(){
if($this->session->userdata('is_logged_in')){
$this->load->model('model_mutamba');
$data['posts_by_tag'] = $this->model_mutamba->getPostsByTag();
$this->load->view("user/mutamba/tag",$data);
}else{
redirect("start");
}
查看:
if("" != $posts_by_tag){
foreach($posts_by_tag as $p){
echo '<br>'.$p->post_text;
}
}
如果我在LIKE 之前添加Not 子句,它似乎可以工作,因为它会返回除包含$tag 之外的所有内容。
任何灯棚将不胜感激。
【问题讨论】:
-
$tag的值究竟是什么?如果它是空的,那么您将查询匹配所有行的LIKE '%%'。 -
@MichaelBerkowski 它不是空的。即使我改变它,让我们说:
SELECT * FROM mutamba_posts WHERE post_text LIKE '%Astrix%'";它有点将包含单词Astrix的帖子放在结果的顶部,但不排除其他不相关的结果。 -
如果发生了奇怪的事情,我们将需要查看更多上下文代码。请发布与变量设置位置、语句形成、执行和获取的位置相关的代码。
-
@MichaelBerkowski 刚刚更新了它。
标签: mysql codeigniter sql-like