运行如果条件内部循环内部foreach PHP =无限加载时间

时间:2013-03-23 21:28:08

标签: php loops

我有点问题......

我想用$ _GET获取一个数组,然后将输出值与从MySQL数据库获取的数组中的行匹配。我想在while循环或foreach循环中执行此操作,因为一旦找到匹配,我必须对匹配的行执行特定的操作:然后应使用这些行中的其他列来设置某些变量。这是代码:

<?php   
$wineneeds=mysql_query("SELECT * from wineneeds");
$needarray=mysql_fetch_array($wineneeds);

foreach($_GET['Need'] as $Needs)
{
    while($needarray)
    {
        if($needarray['Needset']=="$Needs")
            {
                $sweet=$needarray['Sweet'];
            }
        else{}
    }
}

它没有错误我的页面,除了我有无限的加载时间......

我根本找不到错误。

请记住,我是PHP的新手,并希望坚持这样的非常基本的东西。提前谢谢 - 亚历克斯:)

1 个答案:

答案 0 :(得分:1)

您不是通过简单地调用数组来迭代数组。

我建议您反转循环并使用mysql_fetch_assoc,如:

while ($row = mysql_fetch_assoc($wineneeds)) {
    foreach ($_GET['Need'] as $Needs) {
        if ($row['Needset'] == $Needs) {
            $sweet=$row['Sweet'];
        }
    }
}

mysql_fetch_rowmysql_fetch_assoc将返回一行作为列数组。您需要在while循环中调用它以获取整个行集。如果你只调用一次,那么你将返回一行,当你检查该行是否为真时,它将永远为真,而while循环将永远运行。上述解决方案将解决问题。