2015-04-23 20 views
0
function user_account_form_validate($form, &$form_state) { 
    ... 
    db_select('users')->fields('users', array('uid'))->condition('uid', $account->uid, '<>')->condition('name', db_like($form_state['values']['name']), 'LIKE')->range(0, 1)->execute()->fetchField() 
    ... 
} 

這個代碼condition('name', db_like($form_state['values']['name']), 'LIKE')使用「喜歡」來比較名稱字段,爲什麼不使用「=」?爲什麼Drupal的使用像而不是平等的運營商db_select()

+1

'Like'用於模式匹配。 '='運算符用於等同於確切的值。 –

回答

1

它看起來像你的LIKE語句可以包含「*」和「?」,這就是通配符爲什麼它使用「喜歡」,而不是「=」

順便說一句,我剛剛獲悉,在MySQL中都如果表/字段已使用類似utf8_general_ci的歸類定義(「不區分大小寫」的「_ci」),則「=」和LIKE運算符不區分大小寫。我一直認爲=敏感,LIKE不敏感,但似乎並非如此(雙關意圖!)。