循环(while)进入循环(while)进行查询

时间:2012-10-01 15:47:43

标签: php sql

首先是代码:

while($thisValue = mysql_fetch_assoc($someUnrelevantPreviousQuery)) {
    if($thisValue['thisOne']=='something') {
         $query = mysql_query("Some query");
         $result = mysql_num_rows($query);
         if($result) {
             while($result2 = mysql_fetch_assoc($query)) {
                 /* Do this */
             }
         }else echo "Error 1";
     }else
     if($thisValue['thisOne']=='something else') {
         $query = mysql_query("Some other query");
         $result = mysql_num_rows($query);
         if($result) {
             while($result2 = mysql_fetch_assoc($query)) {
                 /* Do that */
             } 
         }else echo "Error 2";
      }             
}

所以我对这段代码有1个问题和1个问题。

问题:

如果第一个while返回值为$thisValue['thisOne']=='something' AND $thisValue['thisOne']=='something else'的2个值,它应该执行2个查询。一个用于第一个“if”,然后一个用于第二个。但是,在实践中,它会找到$thisValue['thisOne']=='something'但是循环停止并且对其他值没有任何作用。怎么来的?

编辑: 另外,如果第一个只返回$thisValue['thisOne']=='something else',我会得到“错误1”回声,而它应该转到下一个if语句。

的问题:

这是正确的方法吗?我的意思是我应该使用另一个循环或方法吗?

PS:代码对我来说似乎很自我解释,这就是为什么我没有解释它。但是如果需要一些细节或任何东西来更好地理解它,请询问。

2 个答案:

答案 0 :(得分:0)

查看你的if语句:

if($thisValue['thisOne']=='something') {}
else if($thisValue['thisOne']=='something else') {}

如果“something”==“something else”

,它只会执行两个块

你正在使用“==”因此可能这些值彼此相等......但在大多数情况下,这种情况极不可能。

答案 1 :(得分:0)

好的,看到我的评论可能就是答案,我会在这里发布:

您正在检查相同的变量(因此相同的值),并期望它等于'Something' 'Something else'。那只风筝永远不会飞......

如果来自=>也许可以改变你的第二个到:

else
if ($thisValue['thisOne'] == 'Something else')
{}
//TO:
if ($thisValue['thisOne'] === 'Something else' || $thisValue['thisOne'] === 'Something')
{
    //do second query
}

这样第二个查询将在第一个if为真时运行,但也在第一个if为false时运行,$thisValue['thisOne'] === 'Something else'。另外:在松散类型的语言中,尽可能多地使用===(类型和值检查)。进入是一个很好的习惯。