小编Din*_*ino的帖子

为什么MySQL返回看似与WHERE子句不匹配的行?

假设用户输入

mysite.com/profile?identity=1
mysite.com/profile?identity=dinodsja
mysite.com/profile?identity=1a
Run Code Online (Sandbox Code Playgroud)

获得价值

$identity = $_GET['identity']; // identity can be user_id or user_name
Run Code Online (Sandbox Code Playgroud)

我有一个简单的选择查询:

SELECT * FROM lb_users WHERE (user_id = 'dinodsja' OR user_name = 'dinodsja') AND user_status = 1
Run Code Online (Sandbox Code Playgroud)

它工作正常.但问题是:

SELECT * FROM lb_users WHERE (user_id = '1a' OR user_name = '1a') AND user_status = 1
Run Code Online (Sandbox Code Playgroud)

当我执行此查询时,它也返回结果而不满足条件.

表结构:

user_id     bigint(25)
user_name   varchar(50)     utf8_general_ci
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

**

-> Is this a MySQL Bug ? 
-> How can we avoid this ? 
-> What will be the query ? …
Run Code Online (Sandbox Code Playgroud)

mysql sql select

22
推荐指数
2
解决办法
3178
查看次数

标签 统计

mysql ×1

select ×1

sql ×1