虽然循环Mysqli没有保存在数组中

时间:2016-11-22 03:30:29

标签: php mysqli

我正在使用Classfunction,尝试将mysqli while loop中的数据发送到public $post=array();中的Class

我不知道为什么while loop只保存mysqli

中的最后一个数据

代码

class Post extends Connection{

        public $post=array();

        function selectPost(){
            $query="select * from posts";
            $mysqli=$this -> connect();
            $select_all_post=$mysqli->query($query);
            $x=1;
            while($row=$select_all_post->fetch_object()){  
                $this->post = array( 'Post No   ' . $x=> array(
                    'post_title' => $row->post_title,
                    'post_author' => $row->post_author,
                    'post_date' => $row->post_date,
                    'post_content' => $row->post_content
                ));
                $x++;
            }
            echo print_r($this->post);
        }
    }

如果我试图在post数组中使用[],它可以工作,但它会创建新的数组 Check Output

$this->post[] = array( 'Post No   ' . $x=> array(
                        'post_title' => $row->post_title,
                        'post_author' => $row->post_author,
                        'post_date' => $row->post_date,
                        'post_content' => $row->post_content
                    ));

我的问题是,如何使用mysqliwhile loop中的所有数据发送到array中的Class

Like This

2 个答案:

答案 0 :(得分:2)

只需在您的类属性$this->post上使用帖子编号作为数组,而不是每次都为新数组编制索引:

$this->post['Post No ' . $x] = array(
    'post_title' => $row->post_title,
    'post_author' => $row->post_author,
    'post_date' => $row->post_date,
    'post_content' => $row->post_content
);

答案 1 :(得分:1)

由于你使用 $ this-> post = array(... 。在你的while循环之后,最后指定的值是你查询的最后一条记录。

我不确定你将如何对此进行豁免。我假设在你收到你的帖子后,你会在它上面循环,这就是你要执行插入的权利吗?

无论如何,考虑到您的代码,您可以使用 array_push 。像这样,

array_push($post, array( 'Post No ' . $x=> array(
        'post_title' => $row->post_title,
        'post_author' => $row->post_author,
        'post_date' => $row->post_date,
        'post_content' => $row->post_content
    )));