0

首先是代码:

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 返回 2 个值 where $thisValue['thisOne']=='something' AND $thisValue['thisOne']=='something else',它应该执行 2 个查询。一个用于第一个“如果”,然后一个用于第二个。然而,在实践中,它会为 find 工作,$thisValue['thisOne']=='something'但随后循环停止并且对其他值不做任何事情。怎么会?

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

问题:

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

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

4

2 回答 2

0

查看您的 if 语句:

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

如果 "something" == "something else" 它只会执行两个块

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

于 2012-10-01T16:02:59.343 回答
0

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

您正在检查相同的变量(因此是相同的值)并期望它等于'Something' and 'Something else'。那个风筝永远,永远飞不起来……

如果从 => 更改为:

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

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

于 2012-10-01T16:07:59.223 回答