【问题标题】:How to split data from MySQL with PHP如何使用 PHP 从 MySQL 中拆分数据
【发布时间】:2019-07-12 08:19:06
【问题描述】:

我尝试做横向报告,如下图所示:

   NO | ITEMS NAME | 01 June | 02 June  | 03 June
    1 | Paper A4   |    3    |    4     |    5
    2 | Pencil     |    0    |    3     |    1

我已经在模型中完成了来自 MySQL 的查询调用,例如:

        $this->db->select('namatoko, GROUP_CONCAT(DAY(tgl_inpt) ORDER BY tgl_inpt ASC) as tgl, GROUP_CONCAT(omz ORDER BY tgl_inpt ASC) as mny');
        $this->db->from('mzharian');
        $this->db->join('toko','toko.idtoko = mzharian.toko');
        $this->db->where('MONTH(tgl_inpt) = MONTH(NOW()) AND YEAR(tgl_inpt) = YEAR(NOW())');
        $this->db->group_by('namatoko');

        $omz = $this->db->get();
        return $omz;

结果如我所愿。

但是现在问题可能来自控制器或视图,我不太确定,因为当我使用这些代码调用数据来查看时,它并没有像我想要的那样出现。 这是我的查看页面代码:

     <?php while($row = mysqli_fetch_row($omz)) { 
      $tgl [] = $row->tgl;
      $money [] = $row->mny;
      $split = array_combine(explode(',', $tgl),explode(',', $money)); ?>

      <tr>
           <td><?php echo $row->namatoko ?></td>
           <?php foreach($row as $v) { echo $split[$v] ? '<td>' .$split[$v].'</td> ':'' ; } ?>
      </tr>
     <?php }; ?>

这是我的控制器页面代码:

        $data['omz'] = $this->Model_omzet->loadomzet();
        $data['datcb'] = $this->Model_omzet->datacb();
        $this->load->view('header');
        $this->load->view('omzet',$data);

导致这样的错误: mysqli_fetch_row() expects parameter 1 to be mysqli_result, object given。有人可以帮我找到解决方案吗?

【问题讨论】:

  • mysqli_fetch_row() 需要mysqli_query()mysqli_store_result()mysqli_use_result() 返回的结果集标识符作为参数。您当前正在使用对象 $omz 喂养它。检查$this-&gt;dbvar_dump($omz) 中发生的情况以确定如何检索您需要的结果集标识符。
  • 类似:if ($result = mysqli_query($link, $query)) { while ($row = mysqli_fetch_row($result)) {

标签: php mysql codeigniter


【解决方案1】:

您可以将omz 结果作为对象从模型返回,并确保它不为空:

    $this->db->select('namatoko, GROUP_CONCAT(DAY(tgl_inpt) ORDER BY tgl_inpt ASC) as tgl, GROUP_CONCAT(omz ORDER BY tgl_inpt ASC) as mny');
    $this->db->from('mzharian');
    $this->db->join('toko','toko.idtoko = mzharian.toko');
    $this->db->where('MONTH(tgl_inpt) = MONTH(NOW()) AND YEAR(tgl_inpt) = YEAR(NOW())');
    $this->db->group_by('namatoko');

    $omz = $this->db->get();
    if ($omz->num_rows() > 0)
    {
        return $omz->result();
    }

然后在 view 上添加验证:

<?php 
    if (!empty($omz))
    {
        foreach($omz as $row){
        $tgl [] = $row->tgl;
        $money [] = $row->mny;
        $split = array_combine(explode(',', $tgl),explode(',', $money));
?>

<tr>
    <td><?php echo $row->namatoko ?></td>
    <?php foreach($row as $v) { echo $split[$v] ? '<td>' .$split[$v].'</td> ':'' ; } ?>
</tr>

<?php
        }
    }
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2017-12-25
    • 1970-01-01
    • 2010-09-24
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多