正如标题所说,非常简单的脚本,我以前从未遇到过这个问题。只需获取新闻系统的数据。我正在测试的id在数据库中是“2”。但如果我做article.php?id = 2fjfkhshs它会显示id为“2”而不是错误的信息。 “id”是数据库中的A_I primary int。
<?php
$nid = mysql_real_escape_string($_GET['id']);
$newsQuery = mysql_query("SELECT * FROM news WHERE id = '$nid' LIMIT 1");
$newsExist = mysql_num_rows($newsQuery);
$newsData = mysql_fetch_array($newsQuery);
if ($newsExist == 1) {
echo $newsData['title'];
}
else {
echo "error";
}
?>
答案 0 :(得分:1)
在MySQL中将数字与字符串进行比较时,字符串也会转换为数字。
SELECT 2 = '2abcdxyz';
1
基本上,当将字符串转换为数字时,字符串将被截断为第一个非数字字符。
SELECT CAST('2zbcxyz' AS UNSIGNED INTEGER);
2
相反,对于完全匹配,您可以使用:
SELECT BINARY 2 = '2abcdxyz';
在此处查看此行动:http://sqlfiddle.com/#!2/01abf/2