【问题标题】:Moodle no value in table but the query result count returns 1Moodle在表中没有值但查询结果计数返回1
【发布时间】:2015-08-13 04:06:17
【问题描述】:

我正在使用 Moodle 2.9.1。我有一个查询要从表中获取最后一条记录:

我的查询如下:

$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),但没有任何显示。但计数显示为 1

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

为什么我会变成这样?

【问题讨论】:

    标签: php mysql moodle


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      现在工作!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-22
        • 2015-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多