Moodle 在 table 中没有值,但查询结果计数 returns 1

Moodle no value in table but the query result count returns 1

我正在使用 Moodle 2.9.1。我有一个查询要从 table:

中获取最后一条记录

我的查询如下:

$qstndetails = $DB->get_record_sql('SELECT * FROM {epoll_questions} WHERE status=? AND courseid=? ORDER BY id DESC LIMIT 0,1',array(2,$curseId));

我算的是

echo count($qstndetails);

如果有结果,我得到的计数为 1。

但是如果结果不存在,我也算作 1。

我试过 print_r($qstndetails) 但没有显示。但是 count 显示为 1.

没有结果时期望计数为0。

为什么我会变成这样?

需要将查询更改为 $qstndetails = $DB->get_records_sql('SELECT * FROM {epoll_questions} WHERE status=? AND courseid=? ORDER BY id DESC LIMIT 0,1',array(2,$curseId));

正在工作!!

开发时,始终打开调试。这可能会显示第一个代码的错误消息。转到站点管理 -> 开发 -> 调试,然后调试消息 = 开发人员并打开显示调试消息。

此外,LIMIT 也不是 SQL 标准。 Moodle 适用于多个数据库,因此请尽量保持 SQL 通用。

我还建议使用命名参数而不是 ?。它使代码更易于阅读,但它们也可以按任何顺序使用。

最后,您可以使用IGNORE_MULTIPLE获取第一条记录。

所以代码应该是这样的:

$sql = "SELECT *
        FROM {epoll_questions}
        WHERE status = :status
        AND courseid = :courseid
        ORDER BY id DESC";
$params = array('status' => 2, 'courseid' => $curseid);
$qstndetails = $DB->get_record_sql($sql, $params, IGNORE_MULTIPLE);