Select 带有 where 子句的语句 Like in array
Select statement with where clause Like in array
我知道如何对单个值执行 SQL LIKE % 查询,如下所示:
$sql = "SELECT * FROM Farmers WHERE Available_products LIKE ('%Bananas%')";
但是如果我的 LIKE 的搜索词来自一个数组,我该怎么做呢?例如,假设我们有一个这样的数组:
$_POST['Products']="Cacaos,Bananas";
$array=implode(',', $_POST['Products']);
$sql = "SELECT * FROM Farmers WHERE Available_products LIKE ('%$array%')";
我想获取数据库中列 Available_Products
包含 Cacaos 或 Bananas 或两者的所有记录
将数组转换为正则表达式并使用REGEX
代替LIKE
$_POST['Products'] = array('Cacaos', 'Bananas');
$regex = implode('|', $_POST['Products']);
$sql = "SELECT * FROM Farmers WHERE Available_products REGEX :regex";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':regex', $regex);
$stmt->execute();
您可以借助 REGEXP 进行尝试。
$_POST['Products']="Cacaos,Bananas";
$array=implode('|', $_POST['Products']);
$sql = "SELECT * FROM Farmers WHERE
Available_products REGEXP". $array;
您也可以这样做:
// Populating join table.
CREATE TABLE temp_table_myArray (myArray nvarchar(255));
INSERT INTO temp_table_myArray (myArray) VALUES ('Cacaos');
INSERT INTO temp_table_myArray (myArray) VALUES ('Bananas');
// Query using the join table.
SELECT F.*
FROM Farmers AS F
INNER JOIN temp_table_myArray AS T ON (F.Available_products LIKE(CONCAT('%',T.myArray,'%')));
但我认为有更好的PHP方法来解决您的问题...
我知道如何对单个值执行 SQL LIKE % 查询,如下所示:
$sql = "SELECT * FROM Farmers WHERE Available_products LIKE ('%Bananas%')";
但是如果我的 LIKE 的搜索词来自一个数组,我该怎么做呢?例如,假设我们有一个这样的数组:
$_POST['Products']="Cacaos,Bananas";
$array=implode(',', $_POST['Products']);
$sql = "SELECT * FROM Farmers WHERE Available_products LIKE ('%$array%')";
我想获取数据库中列 Available_Products
包含 Cacaos 或 Bananas 或两者的所有记录
将数组转换为正则表达式并使用REGEX
代替LIKE
$_POST['Products'] = array('Cacaos', 'Bananas');
$regex = implode('|', $_POST['Products']);
$sql = "SELECT * FROM Farmers WHERE Available_products REGEX :regex";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':regex', $regex);
$stmt->execute();
您可以借助 REGEXP 进行尝试。
$_POST['Products']="Cacaos,Bananas";
$array=implode('|', $_POST['Products']);
$sql = "SELECT * FROM Farmers WHERE
Available_products REGEXP". $array;
您也可以这样做:
// Populating join table.
CREATE TABLE temp_table_myArray (myArray nvarchar(255));
INSERT INTO temp_table_myArray (myArray) VALUES ('Cacaos');
INSERT INTO temp_table_myArray (myArray) VALUES ('Bananas');
// Query using the join table.
SELECT F.*
FROM Farmers AS F
INNER JOIN temp_table_myArray AS T ON (F.Available_products LIKE(CONCAT('%',T.myArray,'%')));
但我认为有更好的PHP方法来解决您的问题...