使用$ _GET通过该id从MySql获取数据。如果?id = 2dsfajhf,则从db中的id“2”获取数据

时间:2013-04-03 02:25:22

标签: php mysql

正如标题所说,非常简单的脚本,我以前从未遇到过这个问题。只需获取新闻系统的数据。我正在测试的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";
          }
          ?>

1 个答案:

答案 0 :(得分:1)

在MySQL中将数字与字符串进行比较时,字符串也会转换为数字。

SELECT 2 = '2abcdxyz';

1

中的结果

基本上,当将字符串转换为数字时,字符串将被截断为第一个非数字字符。

SELECT CAST('2zbcxyz' AS UNSIGNED INTEGER);

2

中的结果

相反,对于完全匹配,您可以使用:

SELECT BINARY 2 = '2abcdxyz';

在此处查看此行动:http://sqlfiddle.com/#!2/01abf/2