通过$ _GET传递变量时,SQL中的查询错误

时间:2016-01-14 10:39:44

标签: php sql

以下是查询:

$table = $_GET['type'];
$q="DELETE FROM '$table' WHERE cont_id='".$_GET['where']."'";

我也尝试删除$_GET部分的单/双引号,但没有用。我在执行查询之前打印了变量的值,它们是正确的,所以我认为这不是问题所在。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

数据库表名不应该用单引号括起来。

更正了SQL:

$q="DELETE FROM $table WHERE cont_id='".$_GET['where']."'";

表和字段名称可以用反引号(`)括起来,以避免与

发生冲突

MySQL reserved keywords

在这种情况下,更正后的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']."'";