2012-09-11 35 views
0

可能重複:
PHP: 「Notice: Undefined variable」 and 「Notice: Undefined index」未定義指數:在後miniblog

找遍四周,不能離開圖這個問題。

$post = (string) mysql_real_escape_string($_GET['post']);<br> 
$page = (int) mysql_real_escape_string(intval($_GET['page'])); 

我不明白錯誤undefined index:post是什麼意思。我在$post$page這兩行都得到這個錯誤。

+0

'post'是一個有效的get參數嗎?當您執行GET請求時,是否在URL中附加了'post = something'? –

回答

0

這個錯誤的意思正是警告告訴你什麼。

$ _GET是作爲HTTP GET參數傳入的項目數組。

$_GET['page']$_GET['post']正在爲您提供未定義的索引警告,因爲關聯'後'或'頁'的關聯數組中沒有項目。

找出問題的一種方法是var_dump()整個$ _GET數組以查看其中的內容。

var_dump($_GET)

1

$_GET variable將被填充只有當你的URL有查詢字符串(這通常意味着是用GET方法提交的表單)。
所以,你必須首先檢查是否$_GET包含的值,然後用論文值:

if(isset($_GET['post']) && isset($_GET['page')) 
{ 
    $post = mysqli_real_escape_string($_GET['post']); 
    $page = intval($_GET['page']); 
} 

鑄造到string是你的第一行代碼沒用的:反正mysqli_real_escape_string返回一個字符串。
在你的代碼第二行:

  • 使用mysql_real_escape_string,因爲你正在使用intval:一個整數值,不需要任何額外的轉義
  • 鑄造int也沒用,這是已經與intval
完成

重要聲明:

由於所有mysql_ *函數都被棄用,並且將在未來的版本中被刪除的PHP,你應該使用MySQLi or PDO(我在我的代碼示例中使用了MySQLi)。