mysql - 使用或不使用 LIKE 检索完全匹配的记录的 SQL 查询

标签 mysql performance drupal-7

从 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/

相关文章:

php - 表单未将数据发送到数据库?

python - 存储外键,不是来自表单 POST 方法,而是我已经拥有的表单数据

mysql - 不像 MySQL 语句

javascript - Angularjs 指令和现在 onclick 很慢

ajax - AJAX 与 Web Sockets 的往返时间

Drupal token 当前页面 :query

mysql - Node 和 MySQL

c++ - 一个像素一个像素的 3d 图形程序 [通过拖动窗口更快地绘图]

mysql - Drupal 对不向普通用户显示的内容的评论

jquery - AJAX 表单验证并提交