我有一个 SQL 选择语句,当它与 URL 中输入的变量值匹配时,它旨在从 MySQL 数据库中选择数据,因此如果?id=12
附加到 URL,它应该返回id
等于 12 的数据库行。
当我试图通过在 URL 中输入奇数值来破坏脚本时,我遇到了这个奇怪的问题:如果用户在 URL 中输入数字后跟一些文本,它会匹配在 URL 中输入的字符串的数字部分,例如:
...index.php?id=12agsgs
将匹配记录 where id = 12
,这不是预期的。
如果文本出现在数字之前,则返回错误或空结果,如预期的那样:
...index.php?id=agsgs12
给出空或错误。
一切都很简单;变量的代码GET
是:
if (isset($_GET['id'])) {
$id = $dbConnect->real_escape_string($_GET['id']);
}
SQL 选择代码为:
$sql = "SELECT * FROM `tablename` WHERE `id` = '$id'" ;
中的字段id
是tablename
一个自动递增的整数索引字段。所以输入.../index.php?id=12agsgs
应该返回一个空的结果。
我错过了一些非常明显的事情吗?这似乎很奇怪,我无法理解正在发生的事情。任何帮助将一如既往地感激不尽!