如何在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 中的单个查询获取项目计数和总计数?

如何使用单个 SQL 聚合函数查询为同一个聚合函数获取多个结果?

如何在单个 oracle SQL 查询和总金额中针对 person_number 和更多列获取总金额

如何在 sparkSQL 中使用从子查询中获取单个值

如何在 SQL 选择查询中添加“或”?

PL/SQL-表和条件都不同时如何在单个查询中实现多条count语句