【问题标题】:CodeIgniter MySQL query where not working after a labelCodeIgniter MySQL 查询在标签后不起作用
【发布时间】:2012-07-07 20:18:20
【问题描述】:

我正在尝试有条件地从数据库中获取结果。 就像 a = 1 和 b != 2 以及很多条件......

这是我的代码示例

$u = $this->ion_auth->user()->row()->id;

$hide=$this->find_hide_post();

$friend=$this->get_all_contacts();

在此之后我开始我的主要查询

$this->db->where('user_id',$u);

foreach($friend as $fr)
{
  foreach($fr as $f)
  {
    if($f->sub_id !=$u)
    {
      $this->db->or_where('user_id', $f->sub_id);
    }
    elseif($f->obj_id !=$u)
    {
      $this->db->or_where('user_id', $f->obj_id);
    }

    $this->db->where('time >', $f->time);
  }
}

我得到了很好的正确结果,但是每当我添加这些行时,我都没有得到正确的结果。但我需要从结果中删除这些帖子。

foreach($hide as $h)
{
  $this->db->where('id !=', $h->post_id);
}

我终于通过了这条路

$result=$this->db->get('my_wall');
$row=$result->result();
print_r($row);

结果是:

数组 ( [0] => 标准类对象 ( [id] => 18 [user_id] => 19 [帖子] => [img] => public/users/wall/pic/Messenger14.png [文档] => [视频] => [链接] => [链接名称] => [access_id] => [喜欢] => 0 [时间] => 1340792296 )

[1] => stdClass Object
    (
        [id] => 19
        [user_id] => 19
        [post] => This is my test Documents
        [img] => 
        [doc] => public/users/wall/doc/19/20745322_temp.pdf
        [video] => 
        [link] => 
        [link_name] => 
        [access_id] => 
        [like] => 0
        [time] => 1340792743
    )

我想避免那些 id 不是 19 或类似的帖子。但我的最后一个查询不起作用:(,结果是一样的。

【问题讨论】:

  • 您的问题是什么?你的“正确”结果是什么?
  • 你能把生成的sql语句贴出来吗?
  • 你好@兰迪!我粘贴结果。请提出您的建议...

标签: php mysql codeigniter


【解决方案1】:

这是因为您的逻辑与 CodeIgniter 的 Active Record 类没有很好地混合。你不能混合or_where 和where 否则你会得到模糊的逻辑。您需要修复您的逻辑以使您的查询正确。这是我的建议。

重写您的 foreach 语句以将所有内容打包到一个数组中。

$ids = array();
foreach ($friend as $fr) {
    foreach($fr as $f) {
        if (...) {
            $ids[] = $f->sub_id;
        }
    }
    $this->db->where('time >', $f->time);
}

...等等。完成 foreach 语句后,请添加以下行。

$this->db->where_in('user_id', $ids);

这应该使您能够正确呈现您的 SQL 语句:

foreach($hide as $h)
{
  $this->db->where('id !=', $h->post_id);
}

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2012-08-18
    • 2016-05-19
    • 1970-01-01
    • 2011-06-17
    • 2012-09-20
    相关资源
    最近更新 更多