我有一个从MySQL表中选择的php脚本。 Table Content设置为UTF8,php脚本与它连接也是如此。
输入字符串是real_escaped。我面临以下问题: 鉴于表中的以下数据:
以下SQL返回1和2 成功的ID,但当被要求提供3时,它不会返回任何内容。
SELECT `ID` FROM `User` WHERE `Username` = '$User'
当我要求用户名= 测试-A 的ID时,为什么不返回? 是因为用户名包含减号?
答案 0 :(得分:0)
它必须是一个不同的字符串。在两种情况下仔细检查破折号/连字符(可能是不同的unicode字符,如所描述的here) - 在复制和粘贴来自" rich"的数据时经常发生这种情况。文字编辑。 还要检查空格。
答案 1 :(得分:0)
根据“real_escaped”的含义,您的用户名可能会转义为类似于('Test \ -A')的内容,而这些内容基本上不存在。
打印$ User的值以检查您发送给MySQL的内容。
最重要的是,您使用的是旧的过时做法,有更好的方法可以使用PDO :: prepare(http://us1.php.net/manual/en/pdo.prepare.php)安全地查询数据库,并在那里使用这些示例。