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);
我正在使用 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);