【问题标题】:foreach is not working in php with pdoforeach 不能在 php 中使用 pdo
【发布时间】:2014-03-11 05:56:51
【问题描述】:

我在我的 PHP 项目中使用 PDO,但我不知道为什么这不起作用。它没有显示任何错误。

我有一个从数据库中读取数据的函数:

function Read_post($con,$table,$limit=6){

    try {
        $query = "SELECT * FROM {$table} ORDER BY  id DESC LIMIT {$limit}";
        $stmt = $con->prepare( $query );
        $stmt->execute();
        return $stmt->fetch(PDO::FETCH_ASSOC);
    } catch (Exception $e) {
        return "ERROR". $e->getMessage();
    }

}

我使用 foreach 循环来显示数据。但它没有显示任何内容:

<?php $posts = Read_post($con,"posts"); ?>

<?php foreach ($posts as $key) {
    echo "something ";
    echo $key["title"];
} ?>

它没有显示其他文本,就像我只回显其他文本一样。

【问题讨论】:

  • 你试过调试这个吗?我假设 $posts 只是空的......因此为什么 foreach 永远不会执行
  • 也是我的想法
  • 回显查询并直接在phpmyadmin中运行
  • echo ["title"]; 与您的数组值无关。 echo $key["title"];可能
  • 要查看错误,您实际上需要:1) 在 PDO 中启用异常 2) 打印 Read_post 的返回值。

标签: php loops pdo foreach


【解决方案1】:

在你的函数 Read_post 中,你有这行:

return $stmt->fetch(PDO::FETCH_ASSOC);

它不会返回一个数组,它会返回一个 PDO 对象。您不能以与数组相同的方式迭代 PDO 对象。试试这个:

$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;

【讨论】:

  • 它现在显示此错误(!)警告:在 C:\wamp\www\Bootstrap\admin\manage_post.php 第 50 行中为 foreach() 提供的参数无效
  • 所以,就在 foreach ($posts as $key) 行之前,试试这个: echo 'posts = '.print_r($posts).'
    ';查看您的查询是否实际上返回任何数据,或者您是否有一个空集。
【解决方案2】:

foreachvar_dump($post) 中回显数组的$value 以检查数组包含

某事

<?php foreach ($posts as $value) {
        echo "something ";
        echo $value;
    } ?>

【讨论】:

  • var_dump( $value ) 可能更合适,因为它本身可能是一个数组或对象。
  • 它没有显示任何东西
猜你喜欢
  • 2014-04-30
  • 2012-03-17
  • 2021-02-13
  • 2017-05-18
  • 2012-08-14
  • 2023-03-15
  • 2015-02-18
相关资源
最近更新 更多