Php 使用REGEXP在MySQL中进行不区分大小写的搜索

Php 使用REGEXP在MySQL中进行不区分大小写的搜索,php,mysql,codeigniter,Php,Mysql,Codeigniter,我想用一个不区分大小写的正则表达式在你的“name”列上搜索我的MySQL数据库 Select * from customers where name regexp '.$some_var.'; 它似乎不起作用。你可以像这样试试 $result = $this->db->where('name like binary "'.$some_var.'"', NULL, FALSE) ->get('customers')

我想用一个不区分大小写的正则表达式在你的“name”列上搜索我的MySQL数据库

Select * from customers where name regexp '.$some_var.';
它似乎不起作用。

你可以像这样试试

$result = $this->db->where('name like binary "'.$some_var.'"', NULL, FALSE)
                   ->get('customers')
                   ->result();
你可以试试看

$result = $this->db->where('name like binary "'.$some_var.'"', NULL, FALSE)
                   ->get('customers')
                   ->result();

我通常会这样做:

$some_var = mb_strtolower($some_var);
"SELECT * FROM `customers` WHERE LOWER(`name`) REGEXP '" . $some_var . "'";
OR
"SELECT * FROM `customers` WHERE LOWER(`name`) REGEXP CONCAT('[[:<:]]', ? , '[[:>:]]')";
$some\u var=mb\u strtolower($some\u var);
“从'customers'中选择*,其中较低('name`)REGEXP'”$有些人说。"'";
或
“从'customers'中选择*,其中较低(`name`)REGEXP CONCAT('[[::]]')”;

或者无论您的正则表达式使用什么,都可以用您使用的内容替换[[::].

我通常会这样做:

$some_var = mb_strtolower($some_var);
"SELECT * FROM `customers` WHERE LOWER(`name`) REGEXP '" . $some_var . "'";
OR
"SELECT * FROM `customers` WHERE LOWER(`name`) REGEXP CONCAT('[[:<:]]', ? , '[[:>:]]')";
$some\u var=mb\u strtolower($some\u var);
“从'customers'中选择*,其中较低('name`)REGEXP'”$有些人说。"'";
或
“从'customers'中选择*,其中较低(`name`)REGEXP CONCAT('[[::]]')”;
或者无论您的正则表达式使用什么,都可以用您使用的内容替换[[::].

试试这个

SELECT * FROM `customers` WHERE LOWER(name) REGEXP '.strtolower($some_var).';
试试这个

SELECT * FROM `customers` WHERE LOWER(name) REGEXP '.strtolower($some_var).';

结果SQL查询是什么?“似乎不起作用”如果你仔细观察它,它实际上不是描述性的。结果SQL查询是什么?“似乎不起作用”如果你仔细观察它,它实际上不是描述性的。你为什么不像im mysql@user2257655那样使用“从
客户中选择*SELECT
WHERE LOWER(name)like%”.strtolower($some_var)。“%”为什么不使用like-im-mysql@user2257655“从
customers
WHERE-LOWER(name)like%”。strtolower($some_var)。“%”