我在第 15 行收到“ undefined variable :row2”的错误。我该如何解决这个问题?
$limit = 20;
$res1 = mysql_query('SELECT *
FROM contact
WHERE name = "Greg"');
$res2 = mysql_query('SELECT name
FROM contact c, passport p
ON c.idNum = p.iNum
WHERE date >= "2015-03-03" AND t< "2015-03-21');
if(!$res1 && !$res2) {
die('Query no valid: ' . mysql_error());
}
else {
while(($row1 = mysql_fetch_array($res1)) || ($row2 = mysql_fetch_array($res2))) {
$sub = $row1['num'] - $row2['num'];
if($sub <= $limit) {
echo '<br>row name is: ', $row2['name'];
}
}
}
我想要做的是从第一个表中获取一个数字(它只会导致 Greg 的行)。然后用第二个表的结果中的数字减去它。其结果被放入子变量中,并检查它是否 <= 20。如果是,它会打印出该行。如果不是,则返回到 while 循环以检查另一行。到目前为止,我走的路是否正确?
最佳答案
您需要更改while()
循环的条件。考虑这个例子:
$a = 1;
if ($a == 1 || $b = 2) {
var_dump(isset($b));
}
var_dump()
的输出将是 boolean false
因为 $b
不存在,这与你的 $row2
未定义。
问题是,当使用 ||
评估条件时,一旦找到匹配,PHP 将停止评估其他条件,因此不会执行右侧的其他比较或赋值。
将你的 while
改成这样,无论如何你都需要 $row1
和 $row2
:
while(($row1 = mysql_fetch_array($res1)) && ($row2 = mysql_fetch_array($res2))) {
(注意 &&
而不是 ||
)
此外,看起来您可能还想在第二个查询中使用 SELECT c.*
,因为您只选择了 name
列,并尝试也使用 num
。
关于php - undefined variable 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683178/