如何解决此CodeIgniter错误消息? “注意:尝试在CodeIgniter中获取非对象的属性”

时间:2018-09-30 08:20:04

标签: php codeigniter codeigniter-query-builder

我正在测试我创建的应用程序是否存在潜在的错误,并修复了一些安全漏洞。我想到要检查该应用程序的数据库和表是否存在,如果运行,它将运行代码,如果表不存在,它将回显警告消息。但是,每当我测试一项功能时,我都会收到一条错误消息:试图获取非对象的属性“ project_name”。这是我要测试的表中模型中的代码和列存在:

public function get_project($id){
            if ($this->db->field_exists('id','projects') == FALSE) {

                $this->db->where('id', $id);

                $query = $this->db->get('projects');

                    if ($query->num_rows() > 0) {
                        return $query->row();   
                    }return false;
            }else{
                echo "Table and column does not exist!";
            }
        }

如您所见,我在其中测试该字段是否存在的行,其值为 FALSE ,以便我在 else 中显示错误警告声明。但是,每当执行此操作时,我都会收到一条错误消息,说在我的视图中试图获取非对象的属性'project_name'。这是我认为的代码:

    <h3>Project Name:<?php echo $project_data->project_name; ?></h3>
    <h3>Date Created:<?php echo $project_data->date_created; ?><h3>
    <h3>Description:</h3>
    <p class='projects-description'>
        <?php echo $project_data->project_body; ?>
    </p>

2 个答案:

答案 0 :(得分:0)

您对该字段的测试是否存在,

请从以下位置更改此行:

if ($this->db->field_exists('id','projects') == FALSE) {

收件人

if ($this->db->field_exists('id','projects') != FALSE) {

那你就好了!

编辑,将上面的代码放在

if ($this->db->table_exists('yourtablename') )
{
  // table exists
}
else
{
  // table does not exist
}

答案 1 :(得分:0)

如果陈述是正确或空白,则表示您有错, 请更改此行:

      if ($this->db->field_exists('id','projects')==FALSE) {

使用此行

       if ($this->db->field_exists('id','projects')) {

这里..

       public function get_project($id){

        if ($this->db->field_exists('id','projects')) { //its already check true 

            $this->db->where('id', $id);

            $query = $this->db->get('projects');

                if ($query->num_rows() > 0) {
                    return $query->row();   
                }return false;
        }else{
            echo "Table and column does not exist!";
        }
    }

}