这是我的代码:
<?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>";
}
}
工作得很好。
任何人都可以帮助我吗?
答案 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,因为他的建议确实摆脱了错误。感谢大家的帮助,我很高兴我得到了解决。