从 rest API URL,我收到一个如下所示的用户 ID:58988e75c918f5bd5804afd6
。
数据库将用户名存储在名称字段中,格式如下:
58988e75c918f5bd5804afd6 约翰
。
我当前获取此记录的 SQL 查询是:
$sql = 'SELECT * FROM users WHERE name LIKE :term';
$result = db_query($sql, array(':term' => db_like($userid)));
$existingUser = $result->fetchObject();
对于当前的 SQL 查询,即使我提供了部分用户 ID (58988e75c918f5bd5804),它似乎也提取了 John 行,这不是我希望发生的事情。如何修复查询,使其与包含 John 的用户 ID 完全匹配?
预期结果:由于用户id不完全匹配,没有检索到记录。
更新:我获取记录,然后执行子字符串替换以更新 Drupal 表中的记录。
注意:随意修改sql查询以获得预期结果,无需使用LIKE
最佳答案
在您喜欢的术语中使用空格: Include space in mysql like search
$sql = 'SELECT * FROM users WHERE name LIKE ":term "';
$result = db_query($sql, array(':term' => db_like($userid)));
$existingUser = $result->fetchObject();
最好用PHP验证字符串大小,然后执行mysql之类的。当您使用相同的加密方式时,您将获得相同数量的加密字符。
关于mysql - 使用或不使用 LIKE 检索完全匹配的记录的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42710517/