用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4767|回复: 9
收起左侧

[HELP] 请问如何传数组$data['*']的id的值

[复制链接]
发表于 2010-4-15 01:24:26 | 显示全部楼层 |阅读模式
本帖最后由 iyuki0430 于 2010-4-16 01:59 编辑

我做了一个带回复功能的留言板,控制器里我想把数组$data['journal_comment']的id 的值传给$data['journal_replytocom'],但是像我那样写取到的值是Array,
哪位大大告诉我下该怎么传值吧,弄了两天了都没弄明白~

这是页面显示的错误信息:
A Database Error Occurred
Error Number: 1054

Unknown column 'Array' in 'where clause'

SELECT * FROM comments WHERE replytocom = Array order by last_date asc

控制器:
PHP复制代码
 
function content()
{
   $this->load->model('Mhome');
   $data['journal_comment'] = $this->Mhome->get_journal_comment($this->uri->segment(3));
   $data['journal_replytocom'] = $this->Mhome->get_journal_replytocom($data);
}
 
复制代码


模型:
PHP复制代码
 
function get_journal_comment($article_id)
{
   $query = $this->db->query("SELECT * FROM comments WHERE article_id = $article_id order by last_date asc");
    return $query->result();
}
function get_journal_replytocom($id)
{
    $query = $this->db->query("SELECT * FROM comments WHERE replytocom = $id order by last_date asc");
    return $query->result();
}
 
复制代码
 楼主| 发表于 2010-4-16 01:07:37 | 显示全部楼层
之前可能没有描述清楚问题 , 刚刚重新编辑了下帖子 , 哪位大大帮帮小弟吧 ~~~ 先谢过了
发表于 2010-4-16 09:30:58 | 显示全部楼层
PHP复制代码
 
function content()
{
   $this->load->model('Mhome');
   $data['journal_comment'] =  $this->Mhome->get_journal_comment($this->uri->segment(3));
   $data['journal_replytocom'] = $this->Mhome->get_journal_replytocom($data['journal_comment']);
}
 
复制代码
发表于 2010-4-16 09:39:39 | 显示全部楼层
我还是没看明白。。。
我感觉这是 PHP 基础知识,和 CI 无关。
 楼主| 发表于 2010-4-16 11:46:49 | 显示全部楼层
本帖最后由 iyuki0430 于 2010-4-16 11:49 编辑

回复 3# myzingy
PHP复制代码
 
function content()
{
   $this->load->model('Mhome');
   $data['journal_comment'] =  $this->Mhome->get_journal_comment($this->uri->segment(3));
   $data['journal_replytocom'] = $this->Mhome->get_journal_replytocom($data['journal_comment']);
}
 
复制代码

这么写我也试过啊 , 也显示
A Database Error Occurred
Error Number: 1054

Unknown column 'Array' in 'where clause'

SELECT * FROM comments WHERE replytocom = Array order by last_date asc
这个错误
发表于 2010-4-16 11:50:54 | 显示全部楼层
你为什么要给 where 传个数组呢?sql 语句怎么可能支持数组呢?
用 print_r 看一下数组结构,然后用 数组名['key'] 的形式使用。。。。

我建议各位应该大力使用 print_r,无敌的调试工具!
 楼主| 发表于 2010-4-16 14:22:56 | 显示全部楼层
本帖最后由 iyuki0430 于 2010-4-16 16:18 编辑

回复 6# Hex
谢谢hx大大的指点 , 我用print_r输出的结果是stdClass Object类型的数据 , 这个要怎么输出啊 , 数组[key]的方式报错了Fatal error: Cannot use object of type stdClass as array , 能否告诉我一下改怎么输出啊
发表于 2010-4-16 18:46:07 | 显示全部楼层
对象用 -> 呀。。。。。数组才用 []
建议楼主好好看看 PHP 手册,你会提高很快的。
 楼主| 发表于 2010-4-16 19:23:01 | 显示全部楼层
回复 8# Hex

看了php手册,那里好像要用json_decode(),没太看懂,也试了下还是报错.
改成现在这个不报错了,但是还是不对,没有显示结果,好郁闷啊,就传个参数而已,还这么折腾人,闹心死了
function content()
{
   $this->load->model('Mhome');
   $data['journal_comment'] =  $this->Mhome->get_journal_comment($this->uri->segment(3));
   foreach ($data['journal_comment'] as $value) {
                     $id = $value->id;
                     $data['journal_replytocom'] = $this->Mhome->get_journal_replytocom($id);
   }

}
发表于 2010-4-20 20:41:47 | 显示全部楼层
我大概明白你的意思了。

问题出在这里

PHP复制代码
 
 
 $data['journal_comment'] = $this->Mhome->get_journal_comment($this->uri->segment(3));
 
先来看get_journal_comment()这个方法。
这个方法返回的是一个结果集对象。
 
在控制器中你将这个对象赋值给了$data数组的journal_comment索引。
 
$data['journal_replytocom'] = $this->Mhome->get_journal_replytocom($data);
 
而上面这一句你却将$data数组传给了get_journal_replytocom()方法,
 
在这个方法中你直接将数组放入SQL语句中所以出现了
 
Unknown column 'Array' in 'where clause'
 
 
复制代码


你现在要弄明白的就是
$query->result();这个对象中的内容。
找到你需要的记录的ID值,然后再传给下一个方法。

多看看手册http://codeigniter.org.cn/user_guide/database/results.html

本版积分规则