【问题标题】:CodeIgniter - Severity: Notice - Message: Undefined indexCodeIgniter - 严重性:通知 - 消息:未定义的索引
【发布时间】:2013-04-25 04:30:01
【问题描述】:

尝试显示简单查询的结果。

[编辑]我认为我的查询有问题,activitati.denumireproiecte.denumire 之间似乎存在冲突,但我不知道如何解决。

型号:

public function getActivities() {
    $this->db->select('idA');
    $this->db->select('activitati.denumire');
    $this->db->select('tascuri');
    $this->db->select('activitati.bugetFolosit');
    $this->db->select('proiecte.denumire');
    $this->db->select('proiecte.bugetAlocat');
    $this->db->from('activitati');
    $this->db->from('proiecte');
    $this->db->where('activitati.aprobat = 0');
    $this->db->where('activitati.idProiect = proiecte.idProiect ');

    $result = $this->db->get();
    $data = $result->result_array();

    return $data;
}

控制器:

<?php


class ApproveActivity extends CI_Controller{
    function __construct() {
        parent::__construct();
    }

    public function index () {
        $this->getData();
    }

    public function getData () {
        $this->load->model("db_Activities");
        $data['query'] = $this->db_Activities->getActivities();
        $this->loadView($data);
    }

    public function approve () {

    }


    public function loadView ($data) {
        $this->load->view("ViewActivityApproval",$data);
    }
}

?>

查看:

<table border="1">
    <tr>
        <th>ID</th>
        <th>Denumire</th>
        <th>Tascuri</th>
        <th>Buget Folosit</th>
        <th>Proiect: Denumire</th>
        <th>Proiect: Buget Alocat</th>
    </tr>
    <?php
        var_dump($query);
        foreach ($query as $row): ?>

            <tr>
                <td><?php echo $row['idA'];?></td>
                <td><?php echo $row['activitati.denumire'];?></td>
                <td><?php echo $row['tascuri'];?></td>
                <td><?php echo $row['activitati.bugetFolosit'];?></td>
                <td><?php echo $row['proiecte.denumire'];?></td>
                <td><?php echo $row['proiecte.bugetAlocat'];?></td>
            </tr>
    <?php endforeach; ?>
</table>

奇怪的是:idAtascuri 工作正常,其余的则不行。

我也做了一个var_dump($query),我得到了一个二维数组:

array(2) { 
    [0]=> array(5) { 
        ["idA"]=> string(2) "12" 
        ["denumire"]=> string(6) "Test 1" 
        ["tascuri"]=> string(11) "bla bla bla" 
        ["bugetFolosit"]=> string(3) "200" 
        ["bugetAlocat"]=> string(4) "2500" } 
    [1]=> array(5) { 
        ["idA"]=> string(2) "13" 
        ["denumire"]=> string(6) "Test 2" 
        ["tascuri"]=> string(11) "CursStiinta" 
        ["bugetFolosit"]=> string(3) "200" 
        ["bugetAlocat"]=> string(3) "100" } 
}

然而,即使我只有一个 foreachidAtascuri 也能正常工作。有什么想法吗?

【问题讨论】:

  • 我在数组中看不到 activitati.denumire 元素。你已经输出了数组的var_dump——你能把activitati.denumire指向它吗?

标签: php sql-server codeigniter


【解决方案1】:

除了idAtascuri 之外,您要查找的任何内容都与$row 数组中的索引不匹配。你在这里很清楚-每一行都有idAdenumiretascuribugetFolositbugetAlocat的元素,但你正在寻找activitati.denumire等,这些元素在$row 数组,因此出现错误。

你应该做echo $row['denumire'];。你为什么要访问$row['activitati.denumire']??

【讨论】:

  • 因为我有两个“denumire”,或者至少我应该有,正如您在我的查询中看到的那样:$this-&gt;db-&gt;select('proiecte.denumire');$this-&gt;db-&gt;select('proiecte.bugetAlocat');
  • 我的意思是$this-&gt;db-&gt;select('proiecte.denumire');$this-&gt;db-&gt;select('activitati.denumire');
  • 对,但是您在 SQL 语法中使用的内容与结果数组中显示的内容不同。除非您明确地说“SELECT proiecte.denumire AS `proiecte.denumire”,否则我不完全确定您是否可以这样做,否则您只会在结果数组中获得列名,而不是表名 + 列名。
  • 关于您的上述编辑,您可以使用“AS”给列起别名,这样它们就不会模棱两可了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多