5

codeigniterのコントローラで次のクエリを使用しています。上記のコードでDatamapperで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」は、私のデータベース内のテーブル名が「ユーザー」であるDataMapperの「ユーザー」のためのクラス、「ユーザー」のためのオブジェクト名です。私は、クエリを実行した後に返される行の数を確認したい。 "$ total"は、ユーザーIDとパスワードが一致しなくても常に1を表示します。私が望むのは、行数が返された場合、「OK」、「何か間違っている」などです。 私はその基本を知っていますが、誰かがそれを知っているなら、私を助けてください。前もって感謝します。続き

答えて

6

を試してみる必要がある上になるように

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

echo $query->num_rows(); 

:この例では、$クエリは、クエリ結果オブジェクトが割り当てられる変数です見つかった合計行数はget()ではなくcount()メソッドを呼び出します。

$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); 

詳しくは、ドキュメントをご覧ください。

+0

完璧...多くの多くの(無限回)あなたに感謝... :) –

+0

クエリが実行された後に結果を数えるより安全な方法は、$ u-> result_count()を使用することです。これは、$ this - > _ dm_dataset_iteratorの結果があればそれをカウントし、そうでなければcount($ this-> all)を使います。 –

8

はCIでご利用できている - このページをチェックアウト - http://codeigniter.com/user_guide/database/results.html

$query->num_rows() 

クエリによって返される行数を。注:あなたの例では、あなたがあなただけカウントするようにしたい場合は

$details->num_rows(); 
+0

を使用しようと罰金であるかを試していた場合DatamapperをDBクエリに使用するとcodeigniterでは機能しません...しかし、もしcodeigniterのアクティブなレコードで作業していれば、これは問題ありません。とにかくそれは本当に素晴らしいと私はあなたが私を助けるためにいくつかの時間を取ったことに感謝しています。 Kemal Fadillahが提案したことは完全に働いています。あなたが私を助けるために投資した時間はとても貴重です。あなたのために多くの多くのありがとう:) –

+1

問題はありません - シャーシ - あなたは明らかにdatamapperを言及していますが、それは私に起こっていないし、activerecordの上記を投稿してください。とにかく起こる... – TigerTiger

1

パスワードは暗号化され、再び

またはすべてのデータの一部は、次のコード

$this->db->where(array('us_email_id' => $username,'us_password' => $password1)); 
echo $this->db->count_all_results('users'); 
関連する問題