2013-03-23 69 views
-1
加载时里面

我有一点问题...运行,如果条件而PHP的foreach循环内无限=

我希望获取与$ _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新手,并希望坚持像这样的基本小东西。在此先感谢 - 亚历克斯:)

+0

'while($ needarray)'简直永远不会结束。我会让你找出原因。 – deceze 2013-03-23 21:32:16

+0

哈哈哈,今天有点活力,我们呢? ; P 我喜欢它! 这是因为我没有设置行功能,对吧? :) – 2013-03-23 21:45:48

回答

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循环将永远运行。上面的解决方案将解决问题。

+0

你救了我的一天...我知道这听起来很愚蠢,但我连续六个小时在这! 通过将我的头靠在墙上学习是我最大的优点和缺点。我的头凝视着血腥 - 谢谢你:) – 2013-03-23 21:46:38

+1

很高兴我能帮上忙!我明白。最初的一些概念可能有点棘手。坚持下去,你会像矩阵中的Neo一样! – 2013-03-23 21:49:36