PHP foreach MVC警告

时间:2015-03-31 10:55:04

标签: php model-view-controller

我一直在努力学习一些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;
}

2 个答案:

答案 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 ();
}