我一直在努力学习一些PHP。我正在尝试打印出我的数据库的内容。我一直在关注一个教程,但遇到了以下警告,我根本无法转移。
警告
Warning: Invalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/Lab10/app/views/View.php on line 20
Foreach循环
$HTMLItemList = "";
foreach ( $this->model->itemList as $row )
$HTMLItemList .= "<li><strong>" . $row ["title"] . ": </strong>" . $row ["price"] . "<blockquote>" . $row ["description"] . "</blockquote></li>";
$HTMLItemList = "<ul>" . $HTMLItemList . "</ul>";
模型 - &GT; itemList中
public$itemList=null;
public function prepareItemList () {
$this->ItemList = $this->itemsDAO->getItems ();
}
itemsDAO-&GT; getItems()
public function getItems () {
$sqlQuery = "SELECT *";
$sqlQuery .= "FROM items";
$sqlQuery .= "ORDER BY items.title;";
$result = $this->getDbManager () -> executeSelectQuery ( $sqlQuery );
return $result;
}
答案 0 :(得分:0)
PHP尝试在foreach上迭代的变量不是数组。尝试var_dump()
进行检查。
您可以将array()
设置为模型上itemList
属性的默认值,这样,如果未调用初始化方法,则foreach不会发出警告。
您在此处犯的错误是调用了getItems
方法,并将结果放在ItemList
属性而不是itemList
。记住这个案子!
只需替换
public function prepareItemList() {
$this->ItemList = $this->itemsDAO->getItems();
}
通过
public function prepareItemList() {
$this->itemList = $this->itemsDAO->getItems();
}
它会起作用。
答案 1 :(得分:0)
试试这个
$this->model->prepareItemList();
$HTMLItemList = "";
foreach ( $this->model->itemList as $row )
$HTMLItemList .= "<li><strong>" . $row ["title"] . ": </strong>" . $row ["price"] . "<blockquote>" . $row ["description"] . "</blockquote></li>";
和
public $itemList=null;
public function prepareItemList () {
$this->itemList = $this->itemsDAO->getItems ();
}