【问题标题】:Codeigniter - condition in a queryCodeigniter - 查询中的条件
【发布时间】:2017-04-10 11:25:21
【问题描述】:

我的查询:

$CI->db->select('UserID, Email, Alias, Status, Age');
$CI->db->from('Users');
$CI->db->where('Status', 'Available');
$query = $CI->db->get();
$result = $query->result();
//next comes a function that sends $result to the client app

现在可以了,但是对于 Age

如何通过 MySQL 查询实现这一点?

当然可以使用 PHP foreach 循环来完成,但由于操作时间成本,我宁愿避免这种情况(MySQL 查询可能会更快)。

【问题讨论】:

  • $CI->db->where('Age','
  • 你可以使用多个 where 像上面的例子

标签: php mysql codeigniter


【解决方案1】:

在codeigniter中是这样完成的......

$where=array('Age <'=>'18',
                'Status'=>'Available');
$this->db->where($where);
$this->db->from('Users');
$query = $this->db->get();
if($query->num_rows()>0)
{
  return $query->result_array();
}
else
return FALSE;

【讨论】:

  • 是的,但这将选择所有年龄超过 18 岁的记录。我需要一些不同的东西:年龄低于 18 岁的记录也应该被选择,但只是没有别名字段。 Alias 字段应该从他们身上剥离。
  • 你说你需要高于和低于 18..??:-/ 的数据
【解决方案2】:

您可以在 SQL 中使用 Mysql Condition 解决此问题:

查询将是这样的:

SELECT UserID, Email, IF(Age<18, Alias, "") as Alias, Status, Age FROM Users Where Status='Available';

您可以将 CI 中的查询实现为波纹管:

$CI->db->select('UserID, Email, IF(Age<18, Alias, "") as Alias, Status, Age');
$CI->db->from('Users');
$CI->db->where('Status', 'Available');
$query = $CI->db->get();
$result = $query->result();

【讨论】:

    【解决方案3】:
       $CI->db->select('UserID, Email, if(Age < 18) as  Alias, Status, Age');
       $CI->db->from('Users');
       $CI->db->where('Status', 'Available');
       $query = $CI->db->get();
       $result = $query->result();
    

    或者你也可以这样写查询:

    $query=$this->db->query("select UserID, Email,if(Age < 18) as  Alias, Status, Age from users where status='Available'");
    

    【讨论】:

    • 我只需要从 Age
    • 我开始考虑运行两个单独的查询,然后将它们组合在一起。
    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 2017-09-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    相关资源
    最近更新 更多