public function getdata()
{
$ctrObj = new Country();
$result = $ctrObj->ctrydata($this->table);
if(mysqli_num_rows($result)>0){
while ($row = mysqli_fetch_array($result)) {
return $row;
}
}
}
$ctryObj = new CountryController();
$countries = $ctryObj->getdata();
print_r($countries);
当我print_r($countries);
时,我只能看到一个对象,但如果我在上面提到的函数中打印出来,我找到了所有对象。
答案 0 :(得分:3)
您可以将结果保存在数组中并将其返回:
public function getdata()
{
$data = []; // Init array
$ctrObj = new Country();
$result = $ctrObj->ctrydata($this->table);
if(mysqli_num_rows($result)>0){
while ($row = mysqli_fetch_array($result)) {
$data[] = $row; // Populate it
}
}
return $data; // Return it
}
答案 1 :(得分:0)
因为您只返回一个结果,所以可以像这样更改
public function getdata()
{
$ctrObj = new Country();
$result = $ctrObj->ctrydata($this->table);
$rows = [];
if(mysqli_num_rows($result)>0){
while ($row = mysqli_fetch_array($result)) {
$rows[] = $row;
}
}
return $rows;
}
答案 2 :(得分:0)
你可以屈服:
public function getdata()
{
$ctrObj = new Country();
$result = $ctrObj->ctrydata($this->table);
if(mysqli_num_rows($result)>0){
while ($row = mysqli_fetch_array($result)) {
yield $row;
}
}
}
你会像这样使用它(对记忆有很多好处......):
$ctryObj = new CountryController();
foreach ($ctryObj->getdata() as $country) {
print_r($country);
}
编辑:我已经学习了PDO并且从未接触过mysqli,所以我试图找到fetchAll()的等价物,显然,你也有一个fetch all函数({{3 }})。
我认为您的代码看起来像这样:
public function getdata()
{
$ctrObj = new Country();
$result = $ctrObj->ctrydata($this->table);
if (mysqli_num_rows($result) > 0) {
$rows = mysqli_fetch_all($result);
return $rows;
}
}
这样看起来更有效率,让所有对象逐个绑定到一个数组中(因为它本身就是由php完成的)。无论如何,如果你不想复制结果缓冲区(一个用于mysql端,另一个用于php端),请使用yield