Найдено простое решение: регистронезависимый поиск для SQLite

Периодически мы сталкиваемся с проблемой, что в SQlite по умолчанию оператор LIKE регистрозависим.

Как же выйти из положения?
Причем стандартные решения не подходят...
Но мы нашли простой и действенный метод! Работает на любых хостингах!


Шаг1: задаем новую функцию (можно в конструкторе прописать)

$this->dbh->sqliteCreateFunction('U_LOWER', "u_strtolower", 1);


Шаг2: пишем SQL запрос

$sql = "SELECT * FROM items WHERE u_lower(name) LIKE ('%". mb_strtolower($search) ."%') ";


где видно, что мы:
добавили свою функцию к полю name u_lower
добавили mb_strtolower
Таким образом перевели в нижний регистр все!
Кстати если функции нет, то ее можно создать (и нужно):
if (!function_exists('u_strtolower')) {
function u_strtolower($str) {
return mb_strtolower($str, 'UTF-8');
}
}