你好,我坚持了很奇怪的事情。
我正在为学校项目编写简单的PHP MVC WebApp,但我无法返回二维数组。
我用这种方式解决了这个问题:
class Post{
public $author;
public $cat;
public $table;
function getPosts($cat = ""){
dbstart();
global $dbconn;
empty($cat) ? $query = mysqli_query($dbconn, "SELECT * FROM pytania") : $query = mysqli_query($dbconn, "SELECT * FROM pytania WHERE cat = $cat");
while($row = mysqli_fetch_assoc($query)){
$output[] = $row;
$this -> table = $output;
dbstop();
}
}
}
当我在控制器中调用属性
时,它非常有效"poststable" => $post -> table
给我所有四个帖子(包含4行的二维数组)但我想删除public $ table属性,这样我就可以直接调用这样的方法:
"poststable" => $post -> getPosts($cat)
不幸的是,当我用这个改变我的方法代码时:
return $output;
$ data" poststable"只给我第一篇文章(数组只存储一个帖子)
任何人都知道我做错了什么?在此先感谢您的帮助!
答案 0 :(得分:0)
您需要在 while循环中构建整个输出,之后您可以返回它。此外,您应该在循环外清理数据库。
<?php
class Post{
public $author;
public $cat;
function getPosts($cat = ""){
dbstart();
global $dbconn;
empty($cat)
? $query = mysqli_query($dbconn, "SELECT * FROM pytania")
: $query = mysqli_query($dbconn, "SELECT * FROM pytania WHERE cat = $cat");
// Use an array as your return value
$output = [];
while($row = mysqli_fetch_assoc($query)){
// Build up the array
$output[] = $row;
}
// Do your clean up out here
dbstop();
// Now return the result
return $output;
}
}