PHP ForEach错误

时间:2013-03-24 01:43:20

标签: php mysql foreach

这是我的代码:

<?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>";
            }
        }

工作得很好。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

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

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

绝对没有其他简单方法

换句话说,你需要使用while。如果您使用像PDO这样的扩展程序,则可以使用fetchALL

之类的内容

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

答案 1 :(得分:0)

Ty this

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

     //echo as you like
    echo ... $row['Name'] ;
}

答案 2 :(得分:0)

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