Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么SQL查询使用一个值而不是另一个值?_Mysql_Sql - Fatal编程技术网

Mysql 为什么SQL查询使用一个值而不是另一个值?

Mysql 为什么SQL查询使用一个值而不是另一个值?,mysql,sql,Mysql,Sql,我有一个关于用户名的专栏。我的桌子上有两排。一个人的价值是 Example@Example.com 另一个值为 AllenPHundleyo5Y3SDKs8bGmailmFaGC4r2xvcom 第二封电子邮件是如此不同,因为这是一封通过我网站上的一个功能传递的电子邮件,它可以安全地显示用户在数据库中输入的任何内容。(防止用户编写代码。) 但是,如果我使用完全相同的查询来获取每一行 Example@Example.com 行得通,但另一个不行。即: SELECT * FROM profi

我有一个关于
用户名的专栏。我的桌子上有两排。一个人的价值是

Example@Example.com
另一个值为

AllenPHundleyo5Y3SDKs8bGmailmFaGC4r2xvcom
第二封电子邮件是如此不同,因为这是一封通过我网站上的一个功能传递的电子邮件,它可以安全地显示用户在数据库中输入的任何内容。(防止用户编写代码。)

但是,如果我使用完全相同的查询来获取每一行

Example@Example.com 
行得通,但另一个不行。即:

SELECT * FROM profile WHERE username='AllenPHundleyo5Y3SDKs8bGmailmFaGC4r2xvcom'
在什么地方都找不到

SELECT * FROM profile WHERE username='Example@Example.com' 
是的。这不是查询值不准确的问题。我使用page find在我的表中准确地找到了allenpundleyo5y3sdks8bgmailmfagc4r2xvcom
。为什么会发生这种情况?

试试这个

SELECT * FROM profile
WHERE rtrim(ltrim(username))='AllenPHundleyo5Y3SDKs8bGmailmFaGC4r2xvcom'

不起作用怎么办?什么都不退吗?抛出sql错误“页面查找”。。。您确定第一个字符串中没有可能遗漏的前导或尾随空格吗?@MarcB,查询通过,但没有显示任何内容。因为我们看不到创建“转义”值的算法,所以很难知道它包含什么。使用十六进制编辑器检查它,并检查它的
strlen()
,以验证它只包含您正在查看和查询的可打印字符。其中可能有比可见的更多的内容。建议-通常不建议存储转义字符串(由于您遇到的确切原因),而是始终存储原始字符串并仅在您实际写入输出时处理输出转义。就是这样。简单的事情。我在里面留了空格。愚蠢的错误,但留下问题以防其他人犯同样的错误。这个问题在stackoverflow@Allenph上被问了一百万次,但也许…:)