【问题标题】:CodeIgniter - Query array output three times instead oneCodeIgniter - 查询数组输出三次而不是一次
【发布时间】:2013-05-26 14:28:23
【问题描述】:

输出错误,我得到了三个相同的评论,而不是只有一个。 谁能帮忙只发表一条评论。

这里是我的 php 代码:

$modelid = "5" ;

$query = $this->db->query('SELECT message FROM message WHERE modelid = '.$modelid.' ');

$row = $query->row(); 

echo $row->message;

还有我的桌子:

http://dev.interactive-creation-works.net/Stack/table.png

控制器:

        class Comment extends CI_Controller
{
    function index()
    {
        $data['result'] = $this->db->get('message')->result();
        $this->load->view('commentView',$data);

    }
    function insert()
    {

     $this->load->model('commentjquery');
     echo $this->commentjquery->inserttodb();
    }
}

【问题讨论】:

  • 在mysql中使用这个查询是做什么的?你的数据库结构是什么?数据库中有什么?
  • sry 无法在此处发布图片链接到 tghe 结构它应该只列出 modelid 5 所在的评论消息
  • 你怎么称呼这段代码?
  • @RocketHazmat:这显然是一个 CodeIgniter 视图,因此推测它正在被控制器函数加载和使用。不过,控制器可能是问题所在 - 介意发布它吗,dA?
  • 等等。一个看法?!不!不要在视图中调用数据库!为此使用模型。

标签: php mysql codeigniter foreach


【解决方案1】:

你没有得到错误真的很奇怪。当你得到三个输出时,它会变得更奇怪。

将您的查询更改为此。

$query = $this->db->query('SELECT message FROM message WHERE modelid = "'.$modelid.'"');

【讨论】:

  • 你的回答者,但我从 user1618143 那里得到了解决方案
【解决方案2】:

此视图应该只显示一条消息,即使您这样做(无论出于何种原因,无论是否正确)从查询中获取了三条消息。您可能会在控制器中加载视图三次。尝试在视图的顶部和底部添加一些静态文本,看看它是否会出现多次。

编辑:

既然您已经发布了控制器,我可以看出这不是问题所在。但是我注意到您尝试从数据库中获取 cmets 两次——一次在控制器中,一次在模型中。控制器中的那个实际上是错误的方法,除非您已经为您的 cmets 实现了一个 ActiveRecord 模型,并且无论如何您都没有使用结果。 我刚才注意到的另一件事是您正在调用$query->row(),而不是在$query->result() 上运行foreach。试试这个:

foreach($query->result() as $row) {
    echo $row->message;
}

编辑 2:或者可能是问题所在,如果您发布的代码 sn-p 不是整个视图,似乎就是这种情况。

【讨论】:

  • 好吧 textsample 的回声也是他们的三倍
  • 谢谢我发现了我忘记删除foreach和foreach结尾的问题
  • 好的,我会试试的。目前输出只有一次,但并不是所有的行都具有modelid 5
  • 非常感谢您,您的代码有效,我现在看到所有具有正确模型标识的行。谢谢你的时间=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多