如何在sql查询中获取单个元素?
Posted
技术标签:
【中文标题】如何在sql查询中获取单个元素?【英文标题】:How to get a single element in sql query? 【发布时间】:2016-08-09 03:41:29 【问题描述】:我想根据用户 ID 获取用户 IP 地址。我不明白为什么它不起作用。
在控制器中:
function block_user($name,$user_id)
$ip = $this->m_db->get_ips($user_id);
$data = array(
'username' => $name ,
'ip' => $ip ,
);
$this->db->insert('blacklist', $data);
$this->db->where('user_id',$user_id);
$this->db->delete('comments');
$this->index();
在模型中:
function get_ips($user_id)
$this->db->select('ip');
$this->db->from('users');
$this->db->where('user_id',$user_id);
$query = $this->db->get();
return $query;
【问题讨论】:
【参考方案1】:CodeIgniter - return only one row?
你应该做的是返回一行
function get_ips($user_id)
$this->db->select('ip');
$this->db->from('users');
$this->db->where('user_id',$user_id);
$query = $this->db->get();
$ret = $query->row();
return $ret->ip;
【讨论】:
【参考方案2】:首先,你必须在你的模型中制作所有事务数据库,然后你需要使用
$this->db->get();
正确的做法是: 控制器.php
function block_user($name,$user_id)
$re = $this->m_db->get_ips($user_id, $name);
echo $re;
model.php
function insert_data($ip, $name)
$data = array(
'username' => $name ,
'ip' => $ip ,
);
$this->db->insert('blacklist', $data);
$this->db->where('user_id',$user_id);
$this->db->delete('comments');
return $this->db->affected_rows();
function get_ips($user_id, $name)
$this->db->select('ip');
$this->db->from('users');
$this->db->where('user_id',$user_id);
$query = $this->db->get()->row();
$resp = $this->insert_data($query, $name);
return $resp;
【讨论】:
以上是关于如何在sql查询中获取单个元素?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用单个 SQL 聚合函数查询为同一个聚合函数获取多个结果?