2012-01-20 81 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

相关问题