2017-03-10 111 views
0

從其他API URL中,我收到的用戶ID如下所示:58988e75c918f5bd5804afd6SQL查詢檢索完全匹配的記錄有無LIKE

該數據庫存儲在名稱字段格式的用戶名: 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的用戶標識完全匹配?

預期結果:由於用戶標識不完全匹配而沒有要檢索的記錄。

更新:我獲取記錄,然後做一個子串替換來更新Drupal表中的記錄。

注:隨意修改SQL查詢來獲得期望的結果,neednt使用LIKE

+1

您正在執行選擇。它如何改變數據? – e4c5

+0

轉載問題 – neelmeg

+0

你期望發生什麼?你期望會發生什麼結果? –

回答

1

使用在類似的條款空間: 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就好。當你使用相同的加密方式時,你會得到相同數量的加密字符。

+0

它的工作原理,檢查空間的好主意 – neelmeg

+0

但是在空間之後你不需要'%'嗎? –