以下是查询:
$table = $_GET['type'];
$q="DELETE FROM '$table' WHERE cont_id='".$_GET['where']."'";
我也尝试删除$_GET
部分的单/双引号,但没有用。我在执行查询之前打印了变量的值,它们是正确的,所以我认为这不是问题所在。
有什么想法吗?
答案 0 :(得分:2)
数据库表名不应该用单引号括起来。
更正了SQL:
$q="DELETE FROM $table WHERE cont_id='".$_GET['where']."'";
表和字段名称可以用反引号(`)括起来,以避免与
发生冲突在这种情况下,更正后的SQL应为:
$q="DELETE FROM `$table` WHERE `cont_id` = '".$_GET['where']."'";
另外,不要相信来自用户的输入。
这可能会导致安全漏洞。
将mysqli_real_escape_string()
用于$_GET['where']
答案 1 :(得分:2)
在你想要报价表名称时,你必须使用符号“`”
$table = $_GET['type'];
$q="DELETE FROM `$table` WHERE cont_id='".$_GET['where']."'";
答案 2 :(得分:1)
$table = $_GET['type'];
$q="DELETE FROM $table WHERE cont_id='".$_GET['where']."'";
OR
$table = $_GET['type'];
$q="DELETE FROM `$table` WHERE cont_id='".$_GET['where']."'";