gpt4 book ai didi

mysql - 为什么 "10ddd"在我的 SQL 查询中等于 "10"?

转载 作者:行者123 更新时间:2023-11-29 05:42:21 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题..

我得到了一个包含以下字段的表:

id          smallint(5)
client_id smallint(5)
name varchar(50)
pass varbinary(20)

我得到了以下值:

id          = 5
client_id = 10
name = 'user'
pass = '123'

但是,如果我在 client_id 之后添加一些字符,它仍会返回该行???

这个查询不应该返回任何东西...嗯

SELECT id
FROM db.user
WHERE client_id='10ddd' && name='user' && pass='123'

最佳答案

那是因为 mySQL 自动转换用于 int 列的字符串值,切断所有非整数内容。

在此过程中,10ddd 被截断为 10

参见 11.2. Type Conversion in Expression Evaluation

我认为使用更严格的 server modes 之一可以关闭,但我在文档中看不到任何内容。如果做不到这一点,我不知道有什么简单的解决方法!

根据值的来源,您可以在执行查询之前检查该值,例如如果在 PHP 中,则使用 is_int();如果值不是整数则退出。

关于mysql - 为什么 "10ddd"在我的 SQL 查询中等于 "10"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5787077/

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