5

codeigniterのコントローラーで次のクエリを使用しています。

    $u -> where('us_email_id', $username);
    $u -> where('us_password', $password1);
    $details = $u -> get();
    $total = count($details);
    echo $total; echo "<br>";
    echo count($details);

上記のコードでは、「$ u」は、データベースのテーブル名が「users」であるデータマッパー「User」のクラス「User」のオブジェクト名です。クエリの実行後に返される行数を確認したい。「$total」は、ユーザーIDとパスワードが一致していなくても、常に1を表示します。私が欲しいのは、行数が1を返した場合は「OK」、それ以外の場合は「何かが間違っている」ということです。私はその基本を知っていますが、誰かがそれを知っているなら、私を助けてください。前もって感謝します。

4

3 に答える 3

8

以下はCIのavailabです-このページをチェックアウトしてください-http://codeigniter.com/user_guide/database/results.html

$query->num_rows()

クエリによって返された行の数。注:この例では、$ queryは、クエリ結果オブジェクトが割り当てられる変数です。

$query = $this->db->query('SELECT * FROM my_table');

echo $query->num_rows(); 

上記の例では、試してみる必要があります

$details->num_rows();
于 2012-05-02T09:56:59.300 に答える
6

見つかった行の総数をカウントしたいだけの場合は、のcount()代わりにメソッドを呼び出しますget()

$u->where('us_email_id', $username);
$u->where('us_password', $password1);
$total = $u->count();

ただし、データも必要な場合は、を呼び出すだけで、その後get()PHPを使用して、オブジェクトのプロパティcount()内にある要素の数を数えます。all

$u->where('us_email_id', $username);
$u->where('us_password', $password1);
$u->get();
$total = count($u->all);

詳細については、ドキュメントを確認してください。

于 2012-05-02T10:01:44.023 に答える
1

パスワードが暗号化されている場合は、再試行してください

または、すべてのデータ部分に問題がない場合は、次のコードを使用してみてください

$this->db->where(array('us_email_id' => $username,'us_password' => $password1));
echo $this->db->count_all_results('users');
于 2013-04-23T19:02:46.790 に答える