2013-03-24 81 views
0

我一直堅持這一段時間,我相信它是一個簡單的修復,但我無法找到它的答案。在查詢中輸入一個數字

我試圖刪除表中的一行,但我放入查詢的變量沒有被識別。在下面的$ remove查詢中,如果我輸入與某一行相對應的數字,則查詢可以正常工作,但是當我使用該變量時,它不會。

if (isset($_POST['remove'])) 
{ 

$remove = $_POST['remove']; 
//echo $remove; print the number entered 

$query ="DELETE dogid FROM regdogs WHERE dogid = $remove "; 
if($query_run = mysql_query($query)){ 
$query_num_rows = mysql_num_rows($query_run); 

if($query_num_rows==1) 
     echo 'Entry removed '; 
else 
     echo 'Not removed '; 
} 

感謝

+0

'dogid'數字或字符串?如果它是一個字符串,它需要引號。另外,如果你正在構建你所有的查詢,你應該使用谷歌SQL注入。您的查詢是相當不安全的。 – Waxen 2013-03-27 23:45:44

回答

7
$query ="DELETE FROM regdogs WHERE dogid = $remove "; 

試試這個。這只是一個語法錯誤。

再次,請移至mysqli_方法。 mysql_方法已被棄用。

+3

或pdo,或至少保護條目 – Sebas 2013-03-24 16:42:40

0

查詢應該進行修改,以

DELETE FROM regdogs WHERE dogid = $remove 

嘗試打印查詢

echo $query; 

後的結果。

0

我認爲你只是需要這樣的:

$query ="DELETE FROM regdogs WHERE dogid = $remove "; 
1

我希望這是一個可以接受的答案 - 因爲你的問題是如何將參數添加到查詢,我覺得這是相關的。

如果您只是添加$remove,即$_POST['remove'],您將允許用戶執行任意的SQL命令。想象一下有人發佈了1 OR 1=1作爲參數。你的SQL查詢會說DELETE dogid FROM regdogs WHERE dogid = 1 OR 1=1並且會刪除整個表。相反,在使用用戶輸入時總是使用mysql_real_escape_string。你的整個代碼應該是這樣的:

if (isset($_POST['remove'])) 
{ 

$remove = mysql_real_escape_string($_POST['remove']); 
//echo $remove; print the number entered 

$query ="DELETE FROM regdogs WHERE dogid = $remove "; 
if($query_run = mysql_query($query)){ 
$query_num_rows = mysql_num_rows($query_run); 

if($query_num_rows==1) 
     echo 'Entry removed '; 
else 
     echo 'Not removed '; 
} 

(當然,大家說mysql_ *已被棄用,絕對是對的,我以爲你是剛開始使用PHP由於大多數教程還在使用mysql_ *。 ,現在絕對沒錯,一旦你對它更熟悉了,考慮切換到mysqli或PDO。)

+0

謝謝,我現在感覺有點傻。 – 2013-03-24 16:52:43

相關問題