【发布时间】:2023-03-07 14:11:01
【问题描述】:
这是一个已知问题吗?
select * from 'tablename' where INET_ATON('any valid ip');
显示整个数据库。我不小心忘记添加 ipaddress = INET_ATON('ip'); 并 cganged 整个数据库。
【问题讨论】:
-
你之后用不同的查询“改变了整个数据库”,对吧?或者好像这是最终选择所有内容的子查询的一部分?
-
WHERE INET_ATON('any valid ip')。 MySQL 将尝试将其转换为布尔值。因为它大于0,就像你做了WHERE TRUE或(WHERE 1)。这就是它选择所有行的原因。仅此查询不会更新任何内容。您是否运行了UPDATE查询? -
update 'tablename' set field1 = '0', field2 = '0', field3 = '0' where INET_ATON('any ip');
-
@user2561395:是的。你去吧。
where INET_ATON('any ip')选择了所有行,因为它已转换为布尔值,因此TRUE:-) -
可能需要注意,ip 必须有效,否则
INET_ATON();将返回 null,在这种情况下不会选择任何内容。