【发布时间】:2011-03-03 09:05:53
【问题描述】:
假设 mysqli 对象已经用全局变量 $mysql 实例化(并连接),这是我正在尝试使用的代码。
class Listing {
private $mysql;
function getListingInfo($l_id = "", $category = "", $subcategory = "", $username = "", $status = "active") {
$condition = "`status` = '$status'";
if (!empty($l_id)) $condition .= "AND `L_ID` = '$l_id'";
if (!empty($category)) $condition .= "AND `category` = '$category'";
if (!empty($subcategory)) $condition .= "AND `subcategory` = '$subcategory'";
if (!empty($username)) $condition .= "AND `username` = '$username'";
$result = $this->mysql->query("SELECT * FROM listing WHERE $condition") or die('Error fetching values');
$this->listing = $result->fetch_array() or die('could not create object');
foreach ($this->listing as $key => $value) :
$info[$key] = stripslashes(html_entity_decode($value));
endforeach;
return $info;
}
}
数据库中有数百个列表,当我调用 $result->fetch_array() 时,它会将数据库的第一行放在一个数组中。 但是,当我尝试调用该对象时,似乎只能访问第一行。 例如: $listing_row = 新列表; 而 ($listing = $listing_row->getListingInfo()) { 回声 $listing[0]; }
这会在数据库中输出同一行的无限循环。为什么它不前进到下一行? 如果我移动代码:
$this->listing = $result->fetch_array() or die('could not create object');
foreach ($this->listing as $key => $value) :
$info[$key] = stripslashes(html_entity_decode($value));
endforeach;
如果我将它移到类外,它会完全按照预期的方式工作,在循环 while 语句时一次输出一行。 有没有办法这样写,这样我就可以在类中保留 fetch_array() 调用并仍然循环遍历记录?
【问题讨论】:
标签: php mysql oop loops mysqli