MYSQL选择不返回某些结果

时间:2016-12-07 10:25:41

标签: php mysql sql

我有一个从MySQL表中选择的php脚本。 Table Content设置为UTF8,php脚本与它连接也是如此。

输入字符串是real_escaped。我面临以下问题: 鉴于表中的以下数据:

  • ID用户名
  • 1测试
  • 2 Test1
  • 3 Test-A

以下SQL返回1和2 成功的ID,但当被要求提供3时,它不会返回任何内容。

SELECT `ID` FROM `User` WHERE `Username` = '$User'

当我要求用户名= 测试-A 的ID时,为什么不返回? 是因为用户名包含减号?

2 个答案:

答案 0 :(得分:0)

它必须是一个不同的字符串。在两种情况下仔细检查破折号/连字符(可能是不同的unicode字符,如所描述的here) - 在复制和粘贴来自" rich"的数据时经常发生这种情况。文字编辑。 还要检查空格。

答案 1 :(得分:0)

根据“real_escaped”的含义,您的用户名可能会转义为类似于('Test \ -A')的内容,而这些内容基本上不存在。

打印$ User的值以检查您发送给MySQL的内容。

最重要的是,您使用的是旧的过时做法,有更好的方法可以使用PDO :: prepare(http://us1.php.net/manual/en/pdo.prepare.php)安全地查询数据库,并在那里使用这些示例。