我得到"未定义的变量"PHP通知

wil*_*fun 2 php notice

我很好奇为什么我在之前已经完成了一百万次的事情上收到了错误,但是在某个脚本上突然出现错误'未定义变量:行'

然而,行似乎对我来说......

$sql = 'SELECT * FROM table WHERE id="1" LIMIT 1 ';

$res = mysql_query($sql);

    if(mysql_num_rows($res) != FALSE) {

    $row = mysql_fetch_array($res);

    }
Run Code Online (Sandbox Code Playgroud)

以上是伪sql ...但我检查了sql语句,我知道它带来了一个结果.我也知道$ row存储数据,因为如果我去

echo $row[0];
Run Code Online (Sandbox Code Playgroud)

我得到了正确的数据.

所以据我所知,定义了$ row变量.但仍然 - 一个错误.我是在失去理智还是在这里失踪了?如果$ row不存在,是否只会出现此错误/通知?


编辑

对不起,伙计们发生在if语句中:

$sql = 'SELECT * FROM table WHERE uID="' . $ID . '" LIMIT 1 ';

$res = mysql_query($sql);

if(mysql_num_rows($res) != FALSE) {

    $row = mysql_fetch_array($res);

$firstName = $row[0];

$lastName = $row[1];

$email = $row[2];

}
Run Code Online (Sandbox Code Playgroud)

编辑2

如果我执行print_r($ row),我会得到以下内容:

Array
(
[0] => Robert
[firstName] => Robert
[1] => Nibbles
[lastName] => Nibbles
[2] => robert@nibbles.com
[email] => robert@nibbles.com
)
Undefined variable: row
Run Code Online (Sandbox Code Playgroud)

Pla*_*ure 8

如果你没有初始化$row到if语句之外的东西,那么它是未定义的.

否则,如果您不想初始化$row为某种空值(并非完全不合理),您可能希望将任何$row在if语句外部检查的代码包围起来

if (isset($row))
  doSomething();

这是一个痛苦,但你刚刚已经要记住,任何变量,你并没有明确定义,甚至到零,是不确定的,如果在代码中的右值(除引用会导致运行时错误isset等).所以一般来说,要么总是初始化你的变量,要么自由地应用如上所述的代码.

如果事实证明这不是问题,我会道歉,但如果没有看到您的代码,我想不出更多.

编辑:对不起,它是"isset"而不是"已定义".有一段时间以来我一直在使用PHP.我尝试用概念回答问题,而不是语法.我的错.