-1

这是我的代码:

<?php
  $query1 = 'SELECT * From Drink';
  $GetName= mysql_query($query1);?>

<?php foreach ($GetName as $GetNames) : ?>
        <?php echo $GetNames['Name']; ?>
        <?php endforeach; ?>

我得到的错误是:

Warning: Invalid argument supplied for foreach() in (removed for privacy) on line 16

我已经查看了与此类似的其他问题,但他们并没有完全回答这个问题。我(目前)对寻找不同的方法来做这件事不感兴趣。我已经有另一种方法,但是我是这样教的,我想知道它为什么会失败。

这不是数据库或查询的问题,因为:

<?php
  if ($GetName) {
            while($row = mysql_fetch_array($GetName)) {
                $name = $row["Name"];
                echo "$name<br>";
            }
        }

工作得很好。

谁能帮我?

4

3 回答 3

2

原因是从 MySQL 查询返回的是资源。这并没有实现允许 foreach 工作的迭代器接口。

您需要循环并在每次查看新结果集时,您需要调用mysql_fetch_array($GetName)直到它返回 false。那是你停下来循环的时候。

绝对没有其他简单的方法

换句话说,你需要使用while. 如果你使用像 PDO 这样的扩展,你可以使用类似的东西fetchALL

阅读 PDO 和 MySQLi 手册以获取更多选项。

于 2013-03-24T01:47:13.463 回答
0

泰这个

foreach ($GetNames as $GetName => $row)
{

     //echo as you like
    echo ... $row['Name'] ;
}
于 2013-03-24T01:46:47.107 回答
0

所以,我让它工作了。问题是我连接到数据库的方式。一旦我切换到 PDO,正如 IOIO MAD 所暗示的那样,它工作得很好。还要感谢 Itay Moav -Malimovka,因为他的建议确实消除了错误。感谢大家的帮助,我很高兴我解决了这个问题。

于 2013-03-24T02:17:46.013 回答