用于检索具有或不具有LIKE的精确匹配记录的SQL查询

时间:2017-03-10 04:54:03

标签: mysql performance drupal-7

在其他API网址中,我收到的用户ID如下:58988e75c918f5bd5804afd6

数据库的名称字段中存储的用户名格式为: 58988e75c918f5bd5804afd6 John

我当前获取此记录的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

1 个答案:

答案 0 :(得分:2)

在您喜欢的词语中使用空格: 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一样。当您使用相同的加密方式时,您将获得相同数量的加密字符。