使用codeigniter获取数据时遇到PHP错误“非法字符串偏移”

使用codeigniter获取数据时遇到PHP错误“非法字符串偏移”,php,database,codeigniter,Php,Database,Codeigniter,所以,我正在一个网络应用程序上进行实验。我想做的是通过将登录用户的id与“posts”数据库上的id匹配,在时间轴中显示用户的帖子列表 这是我的模型 public function load_posts($user_id) { $this->db->where("user_id",$user_id); $query=$this->db->get('posts'); if ($query->num_rows()>0) {

所以,我正在一个网络应用程序上进行实验。我想做的是通过将登录用户的id与“posts”数据库上的id匹配,在时间轴中显示用户的帖子列表

这是我的模型

public function load_posts($user_id)
{
    $this->db->where("user_id",$user_id);
    $query=$this->db->get('posts');

    if ($query->num_rows()>0)
    {
        foreach($query->result() as $rows)
        {
            $haha = array(
                'post_id'   => $rows->id,
                'title'     => $rows->title,
                'artist'    => $rows->artist,
                'album'     => $rows->album,
                'caption'   => $rows->caption,
            );
        }   
        return $haha;
    }
    return array();
}
我的控制器

public function welcome()
{
    $data['title']= 'Welcome';

    $user_id=$this->session->userdata('user_id');
    $haha['hah'] = $this->user_model->load_posts($user_id);

    $this->load->view('header_view',$data);
    $this->load->view('welcome_view.php', $haha);
    $this->load->view('footer_view',$data);
}
那景色呢

<div class="timeline">
    <div class="boxes">
        <table>
        <?php
            foreach($hah as $rows):
        ?>
        <tr>
            <td><?php echo $rows['title']; ?></td>
            <td><?php echo $rows['artist']; ?></td>
            <td><?php echo $rows['album']; ?></td>
            <td><?php echo $rows['caption']; ?></td>
        </tr>
        <?php
            endforeach;
        ?>
        </table>
    </div>
</div>
为了以防万一,我的“帖子”表

CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`artist` varchar(255) NOT NULL,
`album` varchar(255) NOT NULL,
`cover` varchar(30) NOT NULL,
`caption` text NOT NULL,
`user_id` int(11) NOT NULL,
`postTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

任何帮助都将不胜感激

返回的结果数组没有按预期使用键,但您正在尝试访问它们。要熟悉Codeigniter中的返回结构,最好的方法是阅读文档,或者如果你是像我这样的“脏手”类型的人,只需在返回语句之前在模型中添加一个var_dump$haha即可。

你是否打开了探查器?您是否看到正在生成正确的查询

你需要改变你所拥有的

$this->db->where("user_id", $user_id);
$query = $this->db->get('posts');
或者你可以用get_where


如果将数据库放在模型中get函数上方,会发生什么情况?您已将$haha附加到视图中,并尝试将$hah foreach$hah循环为$rows:。这不是打字错误吗?我在任何地方都看不到$hah。$haha v.s.$hah?你可以在$haha['hah']=$this->user\u model->load\u posts$user\u id;在控制器中。我只是在玩弄变量名。@Craig:哦,是的,我交换了它们,只是想看看它是否影响了任何东西,结果却不是,我忘了在发布到这里之前将它返回到原来的位置。把它恢复到原来的状态我是一个使用CI的新手,所以我想是的,我不熟悉返回结构,是的,太棒了!您将学到很多,乍一看,您似乎返回了一个带有键的数组。下面是指向CI数据库返回结果的链接。在控制器中放入var_dump$haha['hah']。。。它显示了什么?它在页面$this->load->view'welcome_view.php'顶部显示了'array5{[post_id]=>String12[title]=>string20 Far Side of the Moon[Artister]=>string7 Tinashe[album]=>string8 Aquarius[caption]=>string6 A6 bgt}'。。。如果从视图中删除.php扩展名,只需$this->load->view'welcome\u view',$haha;不知道该告诉你什么。但是数据回来了,因为你可以看到var_转储。。。您正在将其传递给视图,因此您应该能够通过$hah访问它。
$this->db->where("user_id", $user_id);
$query = $this->db->get('posts');
$query = $this->db->get_where('posts', array('user_id' => $user_id));