2016-12-07 71 views
0

我有一个从MySQL表中选择的php脚本。表格内容被设置为UTF8,所以php脚本也与它相连接。MYSQL不返回某些结果

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

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

以下SQL返回1和2的ID为成功,但当询问第3个它返回没什么。

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

为什么不是我索要ID其中用户名= 测试-A回来? 是否因为用户名包含减号?

+2

我会谨慎对待mysql注入。查看准备好的陈述。 –

+0

这也解决了我的问题与第三个测试用例吗? – CMA

+0

不,查询不会因为字符串中有 - 而受到影响。 –

回答

0

它必须是不同的字符串。在这两种情况下仔细检查破折号/连字符(可能是不同的Unicode字符,如here) - 复制和粘贴来自“丰富”文本编辑器的数据时,会频繁发生。 同时检查空格。

0

根据“real_escaped”的含义,可能会出现这样的情况,即您的用户名被转义为类似于('Test \ -A')的东西,而这种东西本质上并不存在。

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

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