0

次のような列を含むテーブルがあります

username,settings1,settings2,settings3

usernameは一意であり、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ステートメントを記述する代わりに、これを行う他の方法はありますか?codeigniter2.0.2を使用しているim

よろしく

4

3 に答える 3

1
// 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
于 2011-08-21T11:11:27.943 に答える
1

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]);
于 2011-08-21T11:13:01.377 に答える
0

オブジェクトを繰り返すことができます

// 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を実行して、これらの項目のみを$ rowに含め、「username」を使用しないようにする必要があります。

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

それ以外の場合、ユーザー名を保持する場合は、IFステートメントはむしろ

if(in_array($key, array('setting1', 'setting2', 'setting3')) && $row->$key == "1")
于 2011-08-21T11:01:28.290 に答える