我有一个非常简单的表 - 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列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."");
你有一个活动的数据库连接?如果没有,您需要在致电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
不是一个数字列。
是的,我在脚本的前面有一个数据库连接。这些建议都没有奏效。我可以做到这一点,但我无法做到这一点,当我尝试做一个AND。 UID是一个INT,CAT是一个VARCHAR。 –
@JamesAckerman:你是否像我建议的那样将单引号添加到查询中? '$ cat'中的数据是否也有单引号?如果是这样,它将打破查询。另外,请注意您的查询容易受到SQL注入的影响。 – FtDRbwLXw6
行 - 这工作。谢谢。 –
$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']);
用于'mysql_real_escape_string'的+1。 – ComFreek
您的脚本很容易出现的SQL注入。一定要妥善消毒你的参数。最好的方法是使用PDO或MySQLi和准备语句。 – TimWolla
是以太网还是两个列(UID,CAT)都是VARCHAR/CHAR列? – Mithrandir
你是否通过回应构建的查询和PHPMyAdmin或类似的东西来检查是否有匹配的数据集? – TimWolla