我很好奇为什么我在之前已经完成了一百万次的事情上收到了错误,但是在某个脚本上突然出现错误'未定义变量:行'
然而,行似乎对我来说......
$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)
如果你没有初始化$row到if语句之外的东西,那么它是未定义的.
否则,如果您不想初始化$row为某种空值(并非完全不合理),您可能希望将任何$row在if语句外部检查的代码包围起来
if (isset($row)) doSomething();
这是一个痛苦,但你刚刚已经要记住,任何变量,你并没有明确定义,甚至到零,是不确定的,如果在代码中的右值(除引用会导致运行时错误isset等).所以一般来说,要么总是初始化你的变量,要么自由地应用如上所述的代码.
如果事实证明这不是问题,我会道歉,但如果没有看到您的代码,我想不出更多.
编辑:对不起,它是"isset"而不是"已定义".有一段时间以来我一直在使用PHP.我尝试用概念回答问题,而不是语法.我的错.