2011-05-17 115 views
0

有人可以幫我解決這個問題。我只是將我的PHP/MYSQL程序傳遞給另一臺計算機(兩者都運行XAMPP和本地主機),現在我得到了大量未定義的索引和未定義的變量ERRORS。有人可以解釋我爲什麼嗎?幫助未定義索引和未定義變量

所有變量都使用isset進行檢查,並且所有值都應該正常,但是我無法獲取任何可以工作的內容,因此它有未定義的索引和未定義的變量ERRORS。

請幫忙! 謝謝

+1

請向我們展示錯誤消息的輸出示例以及代碼中的相應行。 – Alp 2011-05-17 07:12:49

+2

如果你仍然有錯誤,那麼顯然不是一切都好。治療原因,不要糾正症狀。 – Gumbo 2011-05-17 07:19:53

回答

7

到這裏看看: error-reporting

您可以嘗試類似的東西時(runtime):

<?php 
    error_reporting(E_ALL^E_NOTICE); 
?> 

或更新php.ini:

error_reporting = E_ALL & ~E_NOTICE 
+0

拇指提高近乎重複的職位。 :) – dtbarne 2011-05-17 07:20:50

1

很可能你的PHP配置文件(php.ini)中的error_reporting設置與舊的XAMPP配置不同。

3

聽起來好像第一個盒子上的配置具有較低的錯誤報告級別。

您可以在php.ini中或通過ini_set設置代碼。

的php.ini

error_reporting = E_ALL & ~E_NOTICE 

PHP代碼

error_reporting(E_ALL^E_NOTICE); 
2

其他答案可以幫助您解決症狀,而不是問題。你沒有收到錯誤,只是通知,這是一個特殊的錯誤級別,警告你可能存在問題,但不會停止執行。由於php的本質不需要聲明變量,因此在代碼中編寫拼寫錯誤並花費你的代碼跟蹤它是很容易的(我確信每個人都至少做了幾次)。 E_NOTICE提供了救援:無論何時您嘗試使用事先未設置的變量,都會發出警告 - 幫助您發現錯字。

避免它是很容易,假設您正在查看一個提交按鈕的存在在您的文章數組做表單處理:

if ($_POST["submit"] == "submit") 

的情況下,它是一個普通的GET請求,該行會拋出一個E_NOTICE對於「submit」是$ _POST中的無效索引。避免它很容易:

if (isset($_POST["submit"]) && $_POST["submit"] == "submit") 

這首先檢查數組索引是否存在。 PHP使用懶惰評估,在這種情況下,它意味着在isset()之後停止,如果它返回false - 將引發通知的檢查不會被執行。另外:isset不是一個函數,而是一種語言結構 - 因此速度很快。

我的個人偏好是在所有開發人員機器上將error_reporting設置爲E_ALL | E_STRICT,這樣我會收到每個可能出現問題的通知 - 包括使用已棄用的語言功能。