php - undefined variable 数组

标签 php mysql arrays

我在第 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/

相关文章:

php - SSH2 修改用户密码

php - 通知 : Trying to get property of non-object in php

c - 遍历 char 中的字符串**

Javascript - 如何检测两个数组的差异

PHP如何将代码页950转换为utf8

php - MySQL 排序规则类型是否需要匹配 PHP 页面字符集类型?

php - 检索 id 并处理它

python matplotlib 以小时格式设置 xticks

java - boolean[] 与 BitSet : Which is more efficient?

php - 计算服务器和用户时间之间的差异