Php mysql中的select查询始终返回空结果
我使用PHP和phpMyAdmin运行此简单查询:Php mysql中的select查询始终返回空结果,php,mysql,sql,Php,Mysql,Sql,我使用PHP和phpMyAdmin运行此简单查询: SELECT * FROM `rdm_order` WHERE `aff_result` != "xyc" 我查过了。表、列和行不存在 但是查询返回空结果 aff\u result是以下格式:VARCHAR(10)校对utf8\u波斯语\u ci 看来一切都是对的。怎么了 Server: Localhost via UNIX socket Server type: MySQL Server version: 5.7.17-0ubuntu0.1
SELECT * FROM `rdm_order` WHERE `aff_result` != "xyc"
我查过了。表、列和行不存在
但是查询返回空结果
aff\u result
是以下格式:VARCHAR(10)校对utf8\u波斯语\u ci
看来一切都是对的。怎么了
Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.7.17-0ubuntu0.16.04.1-log - (Ubuntu)
Protocol version: 10
Server charset: UTF-8 Unicode (utf8)
Apache/2.4.25 (Unix) OpenSSL/1.0.2g
Database client version: libmysql - mysqlnd 5.0.12-dev
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 7.0.16
这是因为值是
NULL
<=
或无法捕获code>NULL
=代码>比较。请改用以下方法:
SELECT *
FROM `rdm_order`
WHERE `aff_result` != 'xyc'
OR `aff_result` IS NULL
使用
NULL
-安全比较运算符:
SELECT *
FROM `rdm_order`
WHERE not `aff_result` <=> 'xyc';
选择*
从'rdm_订单`
其中不是'aff_result''xyc';
ANSI标准运算符is
不同于
如果您没有任何好的理由将aff_结果的默认值设置为NULL,则可以使用mysql alter命令修改aff_结果
列并将默认值设置为“”(空白字符串),您的查询将返回预期的结果集。
正如@Siyual所解释的,NULL不能被=或!=捕获比较。
在where子句中使用OR运算符不利于索引。表中的所有aff_result
值都是xyc
或NULL
NULL@HoneyBadger我做到了。同样的结果,不起作用。该查询适用于文本和int类型。但不适用于varchar。这不适用于varchar()
?这真的很奇怪。如果你能告诉我反对投票的理由,我会非常感激的。