0

这是我的问题:

Codeigniter 的文档是这样说的:

<?php

    $array = array('name' => $name, 'title' => $title, 'status' => $status);

    $this->db->where($array);

    // Produces: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'

?>

我只想将条件从控制器传递给我的 where 子句到模型,所以:

控制器

<?php
    $condition = array('id' => $id_user)
    $data['info_user'] = $this->user_model->get_user($condition);
?>

模型

public function get_user($condition)
{
    $q = $this
        ->db
        ->where($condition)
        ->get('users');

    if($q->num_rows > 0)
    {
        return $q->row();
    }
}

这个返回:SELECT * FROM ( users) WHERE 3IS NULL

但是当我将数组直接放入模型中时($

4

1 回答 1

0

无需传递数组,我什至不肯定它可以按照您尝试的方式完成。只需将值本身传递给模型,如下所示。答案已编辑以显示多个变量。

控制器:

   $data['info_user'] = $this->user_model->get_user($id_user,$user_login);

模型:

public function get_user($id_user,$user_login)
{
    $q = $this
        ->db
        ->where('id_user',$id_user)
        ->or_where('user_login',$user_login);
        ->get('users');

    if($q->num_rows == 1)
    {
        return $q->row();
    }
}

作为一个附带说明,当您想要从数据库中获取单个结果时,例如在检索用户时,始终检查单个结果而不是 > 0。您要确保只返回一个用户。

于 2013-02-25T12:43:31.210 回答