下面是该查询:
$table = $_GET['type'];
$q="DELETE FROM '$table' WHERE cont_id='".$_GET['where']."'";
我也试过在$_GET
部除去单/双引号,但没有奏效。我在执行查询之前打印了变量的值,他们是正确的,所以我不认为这是问题。
任何想法?
下面是该查询:
$table = $_GET['type'];
$q="DELETE FROM '$table' WHERE cont_id='".$_GET['where']."'";
我也试过在$_GET
部除去单/双引号,但没有奏效。我在执行查询之前打印了变量的值,他们是正确的,所以我不认为这是问题。
任何想法?
数据库表名不应加上单引号。
更正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']
这是一个很好的做法,用单引号括起变量'''带反引号的表名'' – Ben
这很有道理,谢谢!我对反引号和单引号感到困惑。 – user3484582
$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']."'";
在你想要的报价表名,你不得不使用符号 “`”
$table = $_GET['type'];
$q="DELETE FROM `$table` WHERE cont_id='".$_GET['where']."'";
你的代码是注射非常脆弱。您应该切换到使用[准备好的语句](http://php.net/manual/en/pdo.prepared-statements.php)。 – Ben