繁体   English   中英

PHP数组到MySQL查询条件结构

[英]Php array to MySQL query condition structure

我在PHP中有以下数组:

$arr = [1, 3, '4A', '5A', '5C', '2B', '2C', '2E'];

我需要以某种方式将此数组转换为如下所示的字符串:

 $filter =     "(id like '1%') OR 
                (id like '3%') OR 
                (id like '4A%') OR 
                (id like '5A%' OR id like '5C%') OR 
                (id like '2B%' OR id like '2C%' OR id like '2E%')";

数组值的第一个字符表示唯一类别,并用括号括起来。 最后,我将使用它来查询数据库;

$sql = "SELECT * FROM list WHERE {$filter}";

有人可以帮助我将此数组转换为正确的字符串吗? 实现此目的的最佳方法是什么?

让您大致了解一下:数据库行中的“ id”列如下所示; 1B2875。 其中第一个字符(1)表示类别,第二个字符(B)表示子类别。 给定的数组是客户端过滤器请求的结果。

您可以在SQL中使用正则表达式:

SELECT * FROM list WHERE id REGEXP '^(1|3|4A|…)[0-9]+$'

括号内的值可以通过PHP函数implode('|', $filter_strings)

请注意,您应该首先验证并转义过滤器字符串,以防止用户输入操纵查询。 函数preg_quote在这里很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM