编程语言
首页 > 编程语言> > php – Drupal 7 – 与db_select不区分大小写

php – Drupal 7 – 与db_select不区分大小写

作者:互联网

我无法使用MySQL和Drupal 7获得不区分大小写的查询.这是我的模块代码:

$results = db_select('people_table', 'p')->fields('p');
if (array_key_exists('department', $_GET)) {
    $results->condition('Department', '%' . db_like($_GET['department']) . '%', 'LIKE');
}
return $results->orderBy('Name', 'ASC')->execute();

使用URL中的?department = Chemistry,我得到三个结果.使用URL中的?department = chemistry,我没有得到任何结果.当我尝试$results-> condition(‘UPPER(Department)’…时,我收到此错误:

PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘UPPERDepartment’ in ‘where clause’: SELECT p.* FROM {people_table} p WHERE (UPPERDepartment LIKE :db_condition_placeholder_0 ESCAPE ‘\\’) ORDER BY Name ASC;

所以看起来它吃掉了我的括号.我怎么能做一个不区分大小写的LIKE?

编辑:Department列和整个表上的排序规则是utf8_bin. This answer说“唯一特别的是utf8_bin,用于比较二进制格式的字符.”我不知道为什么选择这种排序规则,因为表中的所有数据都是英文文本.我可能只是将校对更改为utf8_general_ci.

解决方法:

什么是Department字段的排序规则?,对于ex utf8_unicode_ci,它应该是前缀* _ci(不区分大小写)

标签:php,mysql,case-insensitive,drupal,drupal-7
来源: https://codeday.me/bug/20190723/1514812.html