【问题标题】:codeigniter: Trying to get property for a non objectcodeigniter:试图获取非对象的属性
【发布时间】:2018-10-19 18:09:17
【问题描述】:

严重性:通知 消息:试图获取非对象的属性 文件名:admin/search_result.php 行号:73

我正在尝试从费用表中的费用列中检索数据。我不知道代码有什么问题。

                          <?php
                            $term_fee = $this->db->get_where('fees' , array(
                              'student_id' => $row['student_code'], 'term' => $running_term,
                              'year' => $running_year ))->row()->fees;
                            echo $term_fee;
                              ?>

这是我的看法。需要帮助

【问题讨论】:

  • 这意味着 student_id 和 year 的位置生成 0 行,因此该对象不可访问。在访问结果对象之前总是检查 num 行

标签: codeigniter


【解决方案1】:

该错误表示您的查询失败。你不应该假设它会成功。这样做的方法是在您使用任何functions that generate query results 之前检查您的通话结果。

我最好的猜测是您提供的值之一不可用。因此,请仔细检查您的输入值。确保它们在那里并且符合您的期望。

尽管这段代码可能无法修复结果,但至少您会捕获失败的查询,并且会获得有关已完成操作的更有意义的信息。

<?php
$query = $this->db->get_where('fees', array(
    'student_id' => $row['student_code'], 
    'term' => $running_term,
    'year' => $running_year )
    );

if(isset($query))
{
    $term_fee = $query->row()->fees;
    echo $term_fee; 
}
else
{
   //do something about the failed query
    echo "Query Failed. Here's what you asked the database to do:<br>";
    echo $this->db->last_query();
}

当“get family”函数失败时会发生什么,它返回 FALSE 并且 FALSE 不是具有任何属性的“对象”。它当然没有附加row() 函数。因此,在使用任何查询结果函数之前,请务必检查 get()get_where() 返回的内容。

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 2011-07-07
    • 2013-06-12
    • 1970-01-01
    • 2017-07-18
    • 2016-05-25
    相关资源
    最近更新 更多