有人可以帮我解决这个问题。我只是将我的PHP / MYSQL程序转移到另一台计算机(都运行XAMPP和localhost),现在我得到了大量未定义的索引和未定义的变量错误。有人可以解释一下原因吗?
使用isset检查所有变量,并且所有值都应该正常,但是我无法按照预期的那样获得任何工作,然后是未定义的索引和未定义的变量ERRORS。
请帮忙! 感谢
答案 0 :(得分:7)
看看这里: error-reporting
你可以尝试类似的东西(运行时):
<?php
error_reporting(E_ALL ^ E_NOTICE);
?>
或者更新php.ini:
error_reporting = E_ALL & ~E_NOTICE
答案 1 :(得分:3)
听起来第一个方框上的配置的错误报告级别较低。
您可以通过ini_set在php.ini或代码中设置它。
的php.ini
error_reporting = E_ALL & ~E_NOTICE
php code
error_reporting(E_ALL ^ E_NOTICE);
答案 2 :(得分:2)
其他答案可帮助您修复症状,而不是问题。您没有收到错误,只是通知,这是一个特殊的错误级别,警告您可能出现问题,但不会停止执行。
鉴于php不需要声明变量的性质,很容易在代码中出现拼写错误并花费你的跟踪它(我确信每个人都至少做过几次)。还有E_NOTICE来救援:当你试图使用一个事先没有设置的变量时它会发出警告 - 帮助你发现拼写错误。
避免它非常简单,假设您正在检查帖子数组中是否存在提交按钮以进行表单处理:
if ($_POST["submit"] == "submit")
如果是常规获取请求,该行将抛出一个E_NOTICE,因为“submit”是$ _POST中的无效索引。避免这种情况非常简单:
if (isset($_POST["submit"]) && $_POST["submit"] == "submit")
首先检查数组索引是否存在。 PHP使用惰性求值,在这种情况下,它意味着在isset()之后停止,如果它返回false - 将抛出通知的检查将不会被执行。另外:isset
不是一个函数,而是一个语言结构 - 因此速度很快。
我个人的偏好是在所有开发者计算机上将error_reporting设置为E_ALL | E_STRICT
,这样我就会收到每个可能出现的问题的通知 - 包括使用已弃用的语言功能。
答案 3 :(得分:1)
可能PHP配置文件(php.ini)中的error_reporting设置与旧的XAMPP配置不同。