为foreach()提供的参数无效

时间:2016-01-01 17:18:53

标签: php

我正在尝试从我的数据库中获取所有结果。我设置了一个OOP结构,并在我的DB类中创建了几个函数,从数据库中获取所有结果。

public function getAll($table, $order) {
     return $this->actionAll('SELECT *', $table, $order);
}

public function actionAll($action, $table, $order) {
        $sql = "{$action} FROM {$table} ORDER BY {$order} DESC";

        if(!$this->queryAll($sql)) {
            return $this;
        }
    }

public function queryAll($sql) {
        $this->_error = false;

        if($this->_query = $this->_pdo->prepare($sql)) {
            if($this->_query->execute()) {
                $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
                $this->_count = $this->_query->rowCount();
            } else {
                $this->_error = true;
            }
        }
    }

在我的Page类中,我正在调用DB类中的函数并计算结果。

public function get() {
        $data = $this->_db->getAll('pages', 'created');

        if($data->count()) {
            $this->_data = $data->first();
            return true;
        }
    }

接下来,在我的列表PHP文件中,我从我的Page类调用get函数并创建一个foreach循环来循环遍历结果。

<?php $page = new Page();
$pages = $page->get();

     if(empty($pages)): ?>
            <p>No pages at the moment</p>
        <?php else: ?>
              <?php foreach($pages as $item): ?>
                    <tr>
                        <td><?php echo e($item->data()->label); ?></td>
                        <td><?php echo e($item->data()->title); ?></td>
                        <td><a href="<?php echo BASE_URL; ?>/page.php?page=<?php echo e($item->data()->slug); ?>"><?php echo e($item->data()->slug); ?></a></td>
                        <td><a href="<?php echo BASE_URL; ?>/admin/edit.php?id=<?php echo e($item->data()->id); ?>">Edit</a></td>
                        <td><a href="<?php echo BASE_URL; ?>/admin/delete.php?id=<?php echo e($item->data()->id); ?>">Delete</a></td>
                    </tr>
              <?php endforeach; 
 endif; ?>

问题是我收到了为foreach()提供的错误无效参数。我真的不明白为什么我会收到这个错误。

我试图解决这个问题,但想不到解决方案。

1 个答案:

答案 0 :(得分:1)

而不是检查empty($pages)检查!is_array($pages)

<?php $page = new Page();
$pages = $page->get();

     if(!is_array($pages)): ?>
            <p>No pages at the moment</p>
        <?php else: ?>
              <?php foreach($pages as $item): ?>
                    <tr>
                        <td><?php echo e($item->data()->label); ?></td>
                        <td><?php echo e($item->data()->title); ?></td>
                        <td><a href="<?php echo BASE_URL; ?>/page.php?page=<?php echo e($item->data()->slug); ?>"><?php echo e($item->data()->slug); ?></a></td>
                        <td><a href="<?php echo BASE_URL; ?>/admin/edit.php?id=<?php echo e($item->data()->id); ?>">Edit</a></td>
                        <td><a href="<?php echo BASE_URL; ?>/admin/delete.php?id=<?php echo e($item->data()->id); ?>">Delete</a></td>
                    </tr>
              <?php endforeach; 
 endif; ?>