как сделать этот запрос с codeigniter? - PullRequest
0 голосов
/ 21 августа 2011

Есть таблица, содержащая столбцы, такие как

username,settings1,settings2,settings3

имя пользователя уникально, а settings1,2,3 содержит 0 или 1 значения.

$query = $this->db->query("SELECT * FROM tbl_users WHERE username = 'test'");
$queryrow = $query->row();

, поэтому я хочу выбратьстрока, соответствующая имени пользователя и циклически проходящая по столбцам и проверяющая, какой столбец содержит 0 и 1

. Я могу сделать это, написав оператор if для каждого столбца, например, как

if($queryrow->settings1=="1"){
..
}

как 7 столбцов в таблице, поэтому вместо написания 7 операторов if, есть ли другой способ сделать это?я использую codeigniter 2.0.2

С уважением

Ответы [ 3 ]

1 голос
/ 21 августа 2011
// use active record to work even less and be safer 
$query = $this->db->get_where('tbl_users', array('username' => 'test'));
if($query->num_rows() < 1){
    //prevent errors
    return false; // or do something more apropriate
}

$data = $query->row();
$data->setting1; // contains setting1 value
$data->setting2; // contains setting2 value
$data->setting3; // contains setting3 value
1 голос
/ 21 августа 2011

Вы можете вывести массив из таблицы, используя activerecord

$qry = $this->db->get_where('tbl_users',array('username' => 'test'));
$res = $qry->result_array();

// Since you mention each username is a unique, then this should outputing the array of settings
var_dump($res[0]);
0 голосов
/ 21 августа 2011

Вы можете перебирать объекты

// use active record to work less and be safer
$this->db->where('username', 'test');
$query = $this->db->get('tbl_users');

foreach ($query->result() as $row)
{
    // iterate the row object
    foreach($row as $key => $item)
    {
        if($row->$key == "1")
        {
            // your code
        }
    }
}

Если все, что вам нужно сделать в этом цикле, это проверить эти значения, вы должны сделать SELECT, чтобы в строке были только эти элементы, и избегать "username"

$this->db->select('setting1, setting2, setting3');

В противном случае, если вы хотите сохранить имя пользователя, оператор IF может быть скорее

if(in_array($key, array('setting1', 'setting2', 'setting3')) && $row->$key == "1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...