0

PHP では、クエリを記述して実行するときに、while ループを使用して繰り返します。

$sql  = "SELECT username, role FROM studentlogin WHERE username = '$username' and password = '$password'";
        $res = mysql_query($sql);

            while($row = mysql_fetch_array($res, MYSQL_NUM)){
                   $uname = $row[0];
                   $stud_role = $row[1];
            }

次に、変数 $uname と $stud_role をコードのどこかで使用します。codeigniter で似たようなことをしようとしていますが、失敗します。

function studentlogin($username, $password)
    {

        $query = "SELECT username, role FROM studentlogin WHERE username = ? and password = ?";
        $result = $this->db->query($query, array($username, $password));

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

        else
        {
            return false;
        }
    }

次のようにコントローラーからこの関数を呼び出しています

$data['info'] = $this->student_model->stdentlogin($username, $password);

ここで問題が発生します。上記と同じ while ループを使用してみましたが、ここでは機能しません。コントローラーで2つの値のそれぞれに個別にアクセスするにはどうすればよいですか? 助けが要る。

4

2 に答える 2

1

$result を返す代わりに、$result->row_array(); を返します。

これにより、取得した列の名前付きハッシュが返されます。単一要素の配列になるため、ループする必要はありません。

codeigniter でデータベース データを取得する方法の詳細については、データベース クラス情報を確認してください。

于 2013-03-22T22:23:44.783 に答える
0

while()ループを処理するときに式を評価します。式がと評価された場合TRUE、ループは続行されます。の場合はFALSE停止します。これには本当に最適な場所ではありません。(ところで、mysql_*関数は現在PHPで非推奨になっているので、それらがどのように機能するかを無視することをお勧めします)。

CIデータベースのユーザーガイドには、DBからデータを取得する方法に関する便利な例と情報がたくさんあります。あなたの場合、単一の行を取得する場合は、$result->row()またはを使用する必要があります。前者はオブジェクト$result->row_array()を返し、後者は連想配列を返します。stdClass

于 2013-03-22T22:49:09.693 に答える