2011-09-29 38 views
0

時,我有一個PHP腳本調用從我的主頁,我這樣做:PHP未定義指數錯誤點擊一個鏈接時,調用PHP腳本

echo '<a href="/problems/delete_problem.php?problem_id='.$problem_id.'">Delete</a>'; 

所以這是非常標準。

然後在我的PHP我有這樣的代碼:

<?php 
// delete_problem 

include '../connect.php'; // Here I have db connection settings 

error_log (".......in delete problem"); 

$problem_id = mysql_real_escape_string($_GET["problem_id"]); 

?> 

最後一行,我試圖讓PROBLEM_ID拋出未定義指數錯誤。任何想法爲什麼?

謝謝!

+0

請顯示'problem_id'的示例值。它是否被設置? –

回答

3

你有connect.php裏面的實際連接嗎?或者它只是存儲變量等?

mysql_real_escape_string可能會引起問題,就好像連接不可用一樣會失敗。

除此之外,請嘗試回顯GET變量的內容。您也可以使用(isset($_GET["problem_id"]))來檢查它是否存在。

+0

那就是我對mysql_real_escape_string的看法,但是有一個實際的連接......這個錯誤讓我覺得很奇怪。 – Genadinik

+0

嘗試回顯變量並確保它存在,如上所述 - 這將幫助您縮小問題範圍。 –

+0

爲什麼你想要在一個變量上做一個mysql_real_escape字符串,它將作爲一個整數? – Kenny

2

對於來自用戶的值,務必確保它們存在並可能驗證其格式。

用途:

if (isset($_GET['problem_id']) && trim($_GET['problem_id']) != '') { 
    $problem_id = $_GET['problem_id']; 
    // make sure it is a number 
} else { 
    echo "No problem id given!"; 
} 

這似乎警告,因爲$ _GET數組不包含值PROBLEM_ID,最有可能的,因爲它沒有與URL通過。

2

的Bleh,所有你的人與mysql_real_escape串...

經常檢查,如果你嘗試它的值賦給另一個變量前的變量設置。

也可以用(int)投!

if (isset($_GET["problem_id"])){ 
    $problem_id = (int) $_GET["problem_id"]; 
}