我正在运行一个PHP脚本,并继续收到错误,如:
注意:未定义变量my_variable_name在C:\wamp\www\mypath\index.php第10行
注意:第11行未定义索引:my_index C:\wamp\www\mypath\index.php
警告:在C:\wamp\www\mypath\index.php第11行未定义数组键“my_index”
第10和11行是这样的:
echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];
这些错误消息的含义是什么?
为什么他们会突然出现?我曾经使用这个脚本多年,从来没有任何问题。
我该如何修复它们?
这是一个一般参考问题,供人们链接作为副本,而不是需要一遍又一遍地解释这个问题。我觉得这很有必要,因为现实世界中关于这个问题的答案都非常具体。
相关元讨论:
如何应对重复的问题?
“参考问题”有意义吗?
抛出未定义索引通知的另一个原因是数据库查询中遗漏了一列。
例如:
$query = "SELECT col1 FROM table WHERE col_x = ?";
然后尝试访问循环中的更多列/行。
例如:
print_r($row['col1']);
print_r($row['col2']); // undefined index thrown
或者在while循环中:
while( $row = fetching_function($query) ) {
echo $row['col1'];
echo "<br>";
echo $row['col2']; // undefined index thrown
echo "<br>";
echo $row['col3']; // undefined index thrown
}
另外需要注意的是,在*NIX操作系统和Mac OS X上,事情是区分大小写的。
参考Stack上的以下问答:
MySQL中的表名是否区分大小写?
Mysql查询中区分大小写的表名
MySql -表在不同服务器中的大小写敏感问题