【发布时间】:2017-05-24 08:43:30
【问题描述】:
所以我正在尝试编写一个 PHP 脚本,但我们将把它留在 SQL 部分,因为这是出现问题的地方。我有一个SELECT * 查询,它应该只从用户 ID 匹配的行中获取,并且徽章 ID 符合他们的用户 ID,后跟下划线。虽然,它抓住了不应该包括在内的结果?
这是我的 SQL 查询:
SELECT *
FROM `user_badges`
WHERE `user_id` = 1
AND `badge_id` LIKE '%1_%'
这应该只返回以1_ 开头/包含的徽章,它会抓取所有包含/以1_ 开头的徽章,但它也会抓取it215。如果我搜索不同的用户 ID,例如我自己的,它会抓取所有带有 3_ 的徽章,并且它还会抓取 ACH_RoomDecoFurniCount31,这令人困惑,因为它不包含 3_。也许还有更多?有人可以指出我正确的方向。
【问题讨论】:
-
“所以我正在尝试编写一个 PHP 脚本,但我们将把它留在 SQL 部分,因为这是出现问题的地方” 谢谢!你会惊讶于有多少人不这样做。
-
如果您可以在任何地方找到用户 ID,这无论如何都行不通,因为
%1_%匹配31_abc以及1_abc。除非您完全(并且明确地)分隔用户 ID(例如,将其设为“仅在开头”?),否则您将无法获得明确的匹配。重新考虑您的徽章 ID 格式。
标签: mysql