2017-09-25 82 views
3

我试图读取的行数为使用的Moodle功能的查询。获取从SQL查询计数的Moodle

这是我迄今所做的:

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

如何获得结果的数量?

+0

您是否尝试过使用计数(*)Mysql函数? –

+0

这个方法返回一个数组,因此,所有你需要的就是'count'数组中的元素...... – CBroe

回答

0

get_records_sql() retruns一个数组,所以使用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)'不能保证'预防'。顺便说一句没有问题。由于 –

+0

是的,它会作为Moodle的数据库功能,将清理和逃生每PARAM补充说,这样,只需使用如下所示的字符串插入留下您打开恶意SQL – davosmith

1

您可以使用Moodle的特定功能来计算记录:

$DB->count_records($table); 

你的情况你可以使用:

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

此功能旨在提高效率:如果您只需要计算检索的记录,则无需检索大量数据;-)