可能重複:
PHP: 「Notice: Undefined variable」 and 「Notice: Undefined index」
我剛學PHP和我不斷收到一個未定義的索引錯誤。我是從學習這本書有一個HTML表單和處理表單,使用以下格式PHP頁面:
<!-- The form fields are all set up something like this -->
<input type="text" id="howlong" name="howlong" /><br />
// The PHP starts with one line like this for each of the form fields in the HTML
$how_long = $_POST ['howlong'];
// And there is one line for each one like this to output the form data:
echo ' and were gone for ' . $how_long . '<br />';
我的工作的例子有大約12表單域。
奇怪的是,並非所有的變量都會拋出這個錯誤,但我看不到它的模式。
我已經檢查過所有的HTML字段名與我輸入的PHP $ _POST變量名匹配,並且我已經確定當我填寫表單並提交時,所有字段都填充了某些內容。有趣的是,可以爲該書下載的完整代碼也會引發此錯誤。
我意識到這個代碼可能不反映最佳實踐,它是從書的第一章,顯然我是一個小白:)
如果它的確與衆不同,我使用PHP 5.3.5上XAMPP 1.7.4與Windows 7家庭高級版。
什麼是最好的方式使用isset()爲十幾個表單字段? – red4d 2011-05-30 23:04:59
Pffft。我讓一個簡單的語法錯誤在那裏出現三次...使用了一個美元符號,我不應該'$ _POST ['$ howlong']'。如果我沒有運行你推薦的isset,我會不停地撓撓我的腦袋。現在工作!謝謝! – red4d 2011-05-30 23:57:13
發生了很多...我個人不喜歡使用美元符號來表示變量。關於你的第一個評論,我想到的一件事就是用你想要測試的鍵組成一個數組(讓我們稱之爲「a = {」name「,」passwd「,」email「,...};' )並遍歷它,在'for'循環內一次性調用每個鍵的'isset($ _ POST [$ a [i]])'。儘管我從來沒有這樣做過,但我一直都在測試每一個關鍵的東西。然而,我認爲你應該儘可能縮短表單的「用戶友好性」hehehe – Throoze 2011-05-31 03:19:05