2012-01-20 77 views
0

我有一個非常簡單的表 - 3列ID | UID | CATDELETE FROM table WHERE UID = x AND CAT = y

我想運行一個mysql刪除刪除UID =東西和CAT =東西的行。但它不起作用。我該怎麼做呢?

$uid = $_POST['UID']; 
$cat = $_POST['CAT']; 

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT=".$cat.""); 
+3

您的腳本很容易出現的SQL注入。一定要妥善消毒你的參數。最好的方法是使用PDO或MySQLi和準備語句。 – TimWolla

+2

是以太網還是兩個列(UID,CAT)都是VARCHAR/CHAR列? – Mithrandir

+0

你是否通過迴應構建的查詢和PHPMyAdmin或類似的東西來檢查是否有匹配的數據集? – TimWolla

回答

2

試試這個:

mysql_query("DELETE FROM Categories WHERE UID = $uid AND CAT='$cat'"); 
+0

由於uid是一個整數,它是否應該真的放在''內? – dgw

+0

不,如果它是數字,那麼它不需要用引號括起來 – Arian

+0

也許你應該編輯你的文章,因爲OP表示列uid是整數類型。 – dgw

0

你有一個活動的數據庫連接?如果沒有,您需要在致電mysql_query()之前創建一個。

除此之外,你可以在查詢中遺忘單引號:

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT=".$cat.""); 

應該是:

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT='".$cat."'"); 

假設CAT不是一個數字列。

+0

是的,我在腳本的前面有一個數據庫連接。這些建議都沒有奏效。我可以做到這一點,但我無法做到這一點,當我嘗試做一個AND。 UID是一個INT,CAT是一個VARCHAR。 –

+0

@JamesAckerman:你是否像我建議的那樣將單引號添加到查詢中? '$ cat'中的數據是否也有單引號?如果是這樣,它將打破查詢。另外,請注意您的查詢容易受到SQL注入的影響。 – FtDRbwLXw6

+0

行 - 這工作。謝謝。 –

2
$uid = $_POST['UID']; 
$cat = $_POST['CAT']; 

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT=".$cat.""); 

VARCHAR需要進行轉義

mysql_query("DELETE FROM Categories WHERE UID = ".$uid." AND CAT='".$cat."'"); 

另一個提示使用mysql_real_escape_string或檢查用戶輸入的另一種形式

$uid = mysql_real_escape_string($_POST['UID']); 
$cat = mysql_real_escape_string($_POST['CAT']); 
+1

用於'mysql_real_escape_string'的+1。 – ComFreek

相關問題