首先是代码:
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:代码对我来说似乎很自我解释,这就是为什么我没有解释它。但是如果需要一些细节或任何东西来更好地理解它,请询问。
答案 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'
。另外:在松散类型的语言中,尽可能多地使用===
(类型和值检查)。进入是一个很好的习惯。