如何在sql查询中获取单个元素?

时间:2016-04-17 12:21:30

标签: php codeigniter

我想根据用户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;
}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

首先,您必须在模型中创建所有事务数据库,然后需要使用

$this->db->get();

正确的方法是: Controller.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;
}