0

我正在测试我为可能的潜在错误创建的应用程序并修复其中的一些安全漏洞。我想到检查应用程序的数据库和表是否存在,如果存在,它将运行代码,如果表不存在,它将回显一条警告消息。但是,每当我测试一个功能时,我都会收到一条错误消息,尝试获取非对象的属性 '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>
4

2 回答 2

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
}
于 2018-09-30T08:25:02.343 回答
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!";
        }
    }

}

于 2020-05-18T20:24:14.513 回答