【问题标题】:"Message : Undefined Variable:query " error on joining two tables codeigniter mysql php加入两个表codeigniter mysql php时出现“消息:未定义变量:查询”错误
【发布时间】:2018-01-15 12:36:41
【问题描述】:

我有两个名为 'addexpense' 和 'addcategory' 的表。 我已成功加入每个表,但在我的视图页面上没有查看数据,并且屏幕上传递了一条错误消息。请帮忙。

这是我的模特

public function getExpenses(){
 $this->db->select("addexpense.exp_date, addexpense.exp_amount, addexpense.exp_note, addexpense.exp_created, addcategory.category_name");
 $this->db->from('addexpense');
 $this->db->join('addcategory', 'addcategory.category_id = addexpense.category_id');
 $query = $this->db->get();
 return $query->result();
}

这是我的控制器

public function join(){
  $query = $this->base_model->getExpenses();
  //$data['result'] = null;
    if($query)
    {
        $data['query'] =  $query;
    }
  $this->load->view('listexpense', $data);
}

这是我的视图代码

<tr>
    <td><strong>Date</strong></td>
    <td><strong>Amount</strong></td>
    <td><strong>Note</strong></td>
    <td><strong>Created</strong></td>
    <td><strong>Category Name</strong></td>
</tr> 
<?php foreach($query as $expenses){?>
<tr>
    <td><?=$expenses->exp_date;?></td>
    <td><?=$expenses->exp_amount;?></td>
    <td><?=$expenses->exp_note;?></td>
    <td><?=$expenses->exp_created;?></td>
    <td><?=$expenses->category_name;?></td>
</tr>     
<?php }?>

【问题讨论】:

  • $query = $this-&gt;base_model-&gt;getExpenses(); print_r($query ); exit; 检查值是否来自模态?
  • 是的,我已经通过我的控制器页面函数 test() { $query = $this->base_model->getExpenses(); 进行了检查和测试。 foreach ($query as $query) { echo $query->exp_date;回声 $query->exp_amount;回声 $query->exp_note;回声 $query->exp_created;回声 $query->category_name; } }
  • 结果如何。你得到值了吗?
  • @JYoThI Iam 已经按照我的意愿从两个表中正确获取了我的数据 ,,,,,, 2017-08-07250trtrgvdfdfdfTea Expanse Edappal2017-08-081000gcfddfcgdfdfcfHarithaRent Edappal Shop
  • 分享你在屏幕上看到的错误信息。

标签: php mysql codeigniter join html-table


【解决方案1】:

这是代码,请检查并更新 型号

public function getExpenses(){
   $this->db->select("addexpense.exp_date, addexpense.exp_amount, addexpense.exp_note, addexpense.exp_created, addcategory.category_name");
   $this->db->from('addexpense');
   $this->db->join('addcategory', 'addcategory.category_id = addexpense.category_id');
   $query = $this->db->get();
   $query_rows = $query->num_rows();
   if($query_rows > 0){
          return $query->result();
   } else{
          return 0;
   }
}

对于控制器

public function join(){
    $this->load->model('base_model');
    $query = $this->base_model->getExpenses();
    //print_r($query);die();
    $data['query'] = '';
    if($query != 0){
            $data['query'] = $query;
    }

    $this->load->view('listexpense', $data);
}

供查看

<tr>
    <td><strong>Date</strong></td>
    <td><strong>Amount</strong></td>
    <td><strong>Note</strong></td>
    <td><strong>Created</strong></td>
    <td><strong>Category Name</strong></td>
</tr> 
<?php
    if($query != ''){ 
    foreach($query as $expenses){?>
        <tr>
        <td><?=$expenses->exp_date;?></td>
        <td><?=$expenses->exp_amount;?></td>
        <td><?=$expenses->exp_note;?></td>
        <td><?=$expenses->exp_created;?></td>
        <td><?=$expenses->category_name;?></td>
    </tr>     
<?php } }?>

删除注释“//print_r($query);die();”并检查模型是否正在发送数据,请更新..

【讨论】:

    【解决方案2】:

    模型将 result() 更改为 result_array()

    public function getExpenses(){
        $this->db->select("addexpense.exp_date, addexpense.exp_amount, addexpense.exp_note, addexpense.exp_created, addcategory.category_name");
        $this->db->from('addexpense');
        $this->db->join('addcategory', 'addcategory.category_id = addexpense.category_id');
        $query = $this->db->get();
        return $query->result_array();
    }
    

    控制器尝试下面的代码

    public function join()
    {
        $results = $this->base_model->getExpenses();
    
        $data['expenses'] = array();
    
        foreach ($results as $result) {
            $data['expenses'][] = array(
                'exp_date' => $result['exp_date'],
                'exp_amount' => $result['exp_amount'],
                'exp_note' => $result['exp_note'],
                'exp_created' => $result['exp_created'],
                'category_name' => $result['category_name']
            );
        }
    
        $this->load->view('listexpense', $data);
    
    }
    

    查看确保是正确的视图

    <table>
    <thead>
    </thead>
    <tbody>
    <?php foreach($expenses as $expense){?>
    <tr>
        <td><?php echo $expense['exp_date'];?></td>
        <td><?php echo $expense['exp_amount'];?></td>
        <td><?php echo $expense['exp_note'];?></td>
        <td><?php echo $expense['exp_created'];?></td>
        <td><?php echo $expense['category_name'];?></td>
    </tr>     
    <?php }?>
    </tbody>
    </table>
    

    【讨论】:

    • 遇到 PHP 错误严重性:通知消息:未定义变量:费用文件名:views/listexpense.php 行号:79
    • @Yahiya 一定是其他原因,您可能正在另一个导致它的函数中加载相同的视图。这一切都应该对我有用。
    【解决方案3】:

    这样设置控制器功能

       public function join(){
          $data['query'] = $this->base_model->getExpenses();
          $this->load->view('listexpense', $data);
        }
    

    【讨论】:

    • 仍然在屏幕上通知错误消息@parvez
    • public function join(){ $data['query'] = $this-&gt;base_model-&gt;getExpenses(); $this-&gt;load-&gt;view('listexpense', $data); }
    【解决方案4】:

    您似乎还没有在controller 中初始化model

    在您的controller 中,您需要先加载model,然后才能使用它的properties。请检查下面的控制器方法。

    public function join() {
        $this->load->model('base_model');
        $query = $this->base_model->getExpenses();
        $data = array();
        if ($query) {
            $data['query'] = $query;
        }
        $this->load->view('listexpense', $data);
    }
    

    让我知道它仍然不起作用。

    【讨论】:

    • 还是没希望的朋友
    • 使用@wolfgang1983 提到的建议,这可能是由于相同的变量名。
    【解决方案5】:

    请您可以通过在视图开始时打印来检查您的数据是否在视图文件中

    <?php echo '<pre>';
     print_r($query);
     ?>
    

    【讨论】:

    • 是的,它通过了,我使用了代码,function test() { $query = $this-&gt;base_model-&gt;getExpenses(); foreach ($query as $query) { echo $query-&gt;exp_date; echo $query-&gt;exp_amount; echo $query-&gt;exp_note; echo $query-&gt;exp_created; echo $query-&gt;category_name; } }@user7596840
    • 在 html 页面开头的 html 文件上打印您的数据,而不是在控制器的功能中
    • 我也在我的视图页面中完成了你的代码,仍然以不同的样式弹出错误
    • no @user7596840 ,错误是这样的遇到了PHP错误严重性:通知消息:未定义变量:查询文件名:views/listexpense.php行号:76
    • 更改变量名 $query 然后检查一次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    相关资源
    最近更新 更多