php - 为什么我的 mysql 连接中有一个 "Invalid argument supplied for foreach"?

标签 php mysql pdo

这是我的数据库连接

 try {
        //create PDO connection 
        $db = new PDO("mysql:host=".DBHOST.";port=8889;dbname=".DBNAME, DBUSER, DBPASS);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {
        //show error
        echo '<p class="bg-danger">'.$e->getMessage().'</p>';
        exit;
    }

我想从我的表中选择一些值:

$pdo = $db->prepare('SELECT  *  FROM animals ORDER BY id ASC;');
foreach ($pdo->execute($db) as $row) {
    echo $row['name'];              
}

但我收到两条警告消息:

Warning: PDOStatement::execute() expects parameter 1 to be array, object given in...

第二个警告:

Warning: Invalid argument supplied for foreach() in...

为 JonStirling 编辑:

 $pdo = $db->prepare('SELECT  *  FROM animals ORDER BY id ASC;');
 while ($row = $pdo->fetch())  {
        echo $row['name'];  
 }  

使用这个解决方案我没有收到任何警告,但仍然没有结果。

最佳答案

一个可能的解决方案是...

$pdo = $db->query('SELECT * FROM animals ORDER BY id ASC;');
while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) {
    echo "\n" . $row['name'];  
}  

关于php - 为什么我的 mysql 连接中有一个 "Invalid argument supplied for foreach"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40887560/

相关文章:

php - CodeIgniter 中的 Mysql INSERT 和 SELECT

javascript - 倒计时-php+mysql+js

php - 在 CodeIgniter 中检索数据库表注释

php - MySQL Between 问题不适用于 Unix 时间戳

php - 使用 PHP/MySQL 登录中断并返回页面

javascript - 将 DIV 导出为 PDF

mysql - Spring boot - 通过SQL插入数据后自增问题

php - 当我将 boolean 值 True-False 作为绑定(bind)到 int 字段的参数发送到 PDO 语句时会发生什么?

php - 我可以在没有bind_param的情况下通过PDO Prepared语句完全防止SQL注入(inject)吗?

php - 使用 JOIN 插入 MySQL 表?