【问题标题】:codeigniter echo query result arraycodeigniter echo 查询结果数组
【发布时间】:2013-02-21 05:11:26
【问题描述】:

模型内部的方法:

    public function get_fichas(){

    $query = $this->db->query("SELECT * FROM fichas;");

    return $query->result();

}

然后,我尝试将此数据传递给控制器​​。控制器上的方法:

public function listar_fichas(){

    $data['fichas_info'] = $this->fichas_model->get_fichas();
    $this->load->view('templates/header');
    $this->load->view('fichas/listar_fichas', $data);

}

当我尝试在视图中列出数据时,出现以下错误:

“致命错误:不能使用 stdClass 类型的对象作为数组”

这是我尝试列出的方式:

查看文件:

<?php foreach($fichas_info as $row){?>
    <table>
        <tr>
            <td><?php echo $row['cod_produto'] ;?></td>
            <td><?php echo $row['nome_produto'] ;?></td>
            <td ><?php echo $row['versao'];?></td>
        </tr>
    </table>
<?php }?>

我认为我在视图上做错了什么。也许我将数据错误地传递给视图。有人可以告诉我我做错了什么吗?谢谢!

【问题讨论】:

    标签: php sql arrays codeigniter


    【解决方案1】:
    <td><?php echo $row['cod_produto'] ;?></td>
    <td><?php echo $row['nome_produto'] ;?></td>
    <td><?php echo $row['versao'];?></td>
    

    应该是:

    <td><?php echo $row->cod_produto ;?></td>
    <td><?php echo $row->nome_produto ;?></td>
    <td ><?php echo $row->versao;?></td>
    

    结果集是一个对象,所以每个列名都是对象的一个​​属性。您将它们作为数组的索引进行访问。

    【讨论】:

      【解决方案2】:

      您正在以对象的形式获取结果,但尝试以数组的形式访问数据。你可以做几件事来解决这个问题:

      通过将 foreach 循环更改为以下内容,继续访问视图中的数据:

          <?php foreach($fichas_info as $row) { ?>
              <table>
                  <tr>
                      <td><?php echo $row->cod_produto; ?></td>
                      <td><?php echo $row->nome_produto; ?></td>
                      <td><?php echo $row->versao; ?></td>
                  </tr>
              </table>
          <?php endforeach; ?>
      

      这将访问您对象中的数据。另一种选择是更改模型中的 get_fichas() 函数以将结果作为数组返回。您可以使用 result_array() 函数,而不是使用 result() 函数。演示:

          public function get_fichas(){
              $query = $this->db->query("SELECT * FROM fichas;");
              return $query->result_array();
          }
      

      这将向您的控制器返回一个数组而不是一个对象。然后,您可以像循环任何其他数组一样在视图中遍历该数组。

      查看http://ellislab.com/codeigniter/user-guide/database/results.html,了解有关使用 CodeIgniter 生成查询结果的更多信息。

      【讨论】:

        【解决方案3】:

        这样做:

        <?php foreach($fichas_info as $row){?>
        <table>
           <tr>
            <td><?php echo $row->cod_produto ;?></td>
             <td><?php echo $row->nome_produto ;?></td>
            <td ><?php echo $row->versao;?></td>
          </tr>
          </table>
          <?php }?>
        

        【讨论】:

        • 我无法理解是什么让人们投票给一个简单而常见的答案
        • @raheelshan 我知道你的意思。因为那些人​​只能理解简单的东西。
        【解决方案4】:

        由于您将结果作为对象获取。所以你应该在你的视图中使用这样的。

        <?php foreach($fichas_info as $row){?>
        <table>
               <tr>
                <td><?php echo $row->cod_produto ;?></td>
                 <td><?php echo $row->nome_produto ;?></td>
                <td ><?php echo $row->versao;?></td>
              </tr>
              </table>
              <?php }?>
        

        【讨论】:

          【解决方案5】:

          我认为你需要这个:

          <?php foreach($fichas_info as $row){?>
          <table><tr>
              <td><?php echo $row->cod_produto ;?></td>
               <td><?php echo $row->nome_produto ;?></td>
              <td ><?php echo $row->versao;?></td>
          </tr></table>
          <?php }?>
          

          【讨论】:

            猜你喜欢
            • 2012-09-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-04
            相关资源
            最近更新 更多