2017-09-25 14 views
3

Moodle関数を使用してクエリの行数を取得しようとしています。moodleのsqlクエリからカウントを取得

これは私がこれまでにやっていることです:

$records = $DB->get_records_sql("select * from {user} where maildigest=$login_id"); 

はどのような結果の数を得るのですか?

+0

'count(*)' Mysql関数を試しましたか? –

+0

このメソッドは配列を返すので、配列の要素を 'count'するだけです... – CBroe

答えて

0

get_records_sql()は配列を再帰的に実行するので、レコード数を取得するにはcount()を使用してください。

は以下のようでください: - あなたが参照する必要が

$records=$DB->get_records_sql("select * from {user} where maildigest=$login_id"); 

echo (count($records)); 

リンクセクション: - https://prnt.sc/gpggq4

+0

SQLステートメントに任意の値を挿入することをお勧めしません。SQLインジェクション攻撃を求めています。 Aldo Paradisoの答えが正しい解決策です。 – davosmith

+0

@ davosmith彼のコードは私のものと同じくらい脆弱であるので、私はそうは思わない。 'array( 'maildigest' => $ login_id)'は '防止'を保証しません。 BTWは問題ありません。きれいにし、すべてのparamは単にここに示すように、文字列の挿入を使用して、その方法を追加エスケープしますMoodleのDB機能は、悪質なSQL –

+0

はい、それは、@AlivetoDie HIIは – davosmith

1

あなたはレコードをカウントするMoodleの特定の機能を使用することができますあなたの場合は

$DB->count_records($table); 

をあなたは使用できます:

echo $DB->count_records('user', array('maildigest'=>$login_id)); 

この機能は、効率を向上させるために設計されています。検索したレコードを数えたい場合は、一括してデータを取得する必要はありません。

関連する問題