我正在使用Class
和function
,尝试将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
));
我的问题是,如何使用mysqli
将while loop
中的所有数据发送到array
中的Class
?
答案 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
)));