gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:48:15 25 4
gpt4 key购买 nike

假设用户输入

mysite.com/profile?identity=1
mysite.com/profile?identity=dinodsja
mysite.com/profile?identity=1a

获取值(value)

$identity = $_GET['identity']; // identity can be user_id or user_name

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

SELECT * FROM lb_users WHERE (user_id = 'dinodsja' OR user_name = 'dinodsja') AND user_status = 1

而且效果很好。但问题是:

SELECT * FROM lb_users WHERE (user_id = '1a' OR user_name = '1a') AND user_status = 1

当我执行这个查询时,它也返回了不满足条件的结果。

表结构:

user_id     bigint(25)
user_name varchar(50) utf8_general_ci

enter image description here

**

-> Is this a MySQL Bug ? 
-> How can we avoid this ?
-> What will be the query ?

**

最佳答案

这是因为 user_ID 列的数据类型是整数。

MySQL 静默地删除值中的任何尾随 非数字(和后面的任何内容),这就是为什么 1a 等于 1,因为 a 将在值中删除。

关于mysql - 为什么 MySQL 会返回看似与 WHERE 子句不匹配的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15715719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com