gpt4 book ai didi

PHP 解析文本 block 以进行查询

转载 作者:行者123 更新时间:2023-11-29 23:32:56 25 4
gpt4 key购买 nike

我正在尝试编写基于以下搜索的 mysql 查询来进行搜索。搜索查询字符串:“(foo 和 bar) 或 (blah1 和 blah2)”

用户将如上所述输入查询字符串,它可能是单个 block 或多个 block 。

我想要做的是将字符串拆分为括号 block ,分别解析它们,然后将其与 ORAND 语句组合起来。

所以我的最终查询看起来像

Select 
*
from
table
where
(field like 'foo%' AND field like 'bar%') OR
(field like 'blah1%' AND field like 'blah2%')

请帮忙。

最佳答案

有几个问题。

您需要将查询字符串分解为各个元素,然后将它们分解为各个值,然后构建查询。

您还需要通过转义或使用准备好的语句来确保输入安全。

使用 mysqli 来使用准备好的语句,如下所示:-

$query_string = strtolower("(foo and bar) or (blah1 and blah2)");

$queries_sets = explode(' or ', $query_string);

$query_set = array();
$fields = array();

foreach($queries_sets AS $query_set_key=>$query_set_value)
{
$query_line = explode(' and ', trim($query_set_value, '()'));
if (count($query_line) == 2)
{
$query_set[] = "(field like ? AND field like ?)";
$fields[] = $query_line[0].'%';
$fields[] = $query_line[1].'%';
}
}

$stmt = $conn->prepare("SELECT * FROM table WHERE ".implode(' OR ', $query_set));
call_user_func_array(array($stmt, 'bind_param'), $fields);

关于PHP 解析文本 block 以进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com