gpt4 book ai didi

mysql - 如何搜索多个关键字

转载 作者:行者123 更新时间:2023-11-30 22:28:33 24 4
gpt4 key购买 nike

我正在尝试从使用多个关键字的表中获取结果。
它适用于单个关键字和两个关键字,但是当我尝试找到两个以上的关键字时,它不起作用。
看一下代码。

if (isset($_POST['keyword'])) {
$keyword = $_POST['keyword'];
// get rid of short words and spaces
$keyword = trim( preg_replace("/[^a-z0-9']+([a-z0-9']{1,3}[^a-z0-9']+)*/i"," "," $keyword ") );
$keyword = trim($keyword, ' ');
// convert phrase to an array of keywords
$keyword = explode(' ', $keyword);

$query = $conn->query("SELECT title, url FROM pages WHERE keywords LIKE '%{$keyword[0]}%'");

if (isset($keyword[1])) {
//$query = $conn->query("SELECT title, url FROM pages WHERE keywords LIKE '%{$keyword[0]}%' OR '%{$keyword[1]}%'");
$query = $conn->query("SELECT title, url FROM pages WHERE keywords LIKE '%{$keyword[0]}%' OR keywords LIKE '%{$keyword[1]}%'");
}

// why is it not reading the third keyword? is it a speed issue?
if (isset($keyword[2])) {
$query = $conn->query("SELECT title, url FROM pages WHERE keywords LIKE IN('%{$keyword[0]}%','%{$keyword[1]}%','%{$keyword[2]}%')");
}

if (isset($keyword[3])) {
$query = $conn->query("SELECT title, url FROM pages WHERE keywords IN('%{$keyword[0]}%','%{$keyword[1]}%','%{$keyword[2]}%','%{$keyword[3]}%')");
}

if (isset($keyword[4])) {
$query = $conn->query("SELECT title, url FROM pages WHERE keywords IN('%{$keyword[0]}%','%{$keyword[1]}%','%{$keyword[2]}%','%{$keyword[3]}%','%{$keyword[4]}%')");
}


我也希望它不能搜索单个字符,例如a或x等。

最佳答案

IN只是对列表中的所有元素进行精确的相等性测试,它不像LIKE那样进行模式匹配。您需要将所有LIKE测试与OR结合在一起。您可以动态地执行此操作,而不是使用所有这些isset调用。

$likes = implode(' OR ', array_map(function($keyword) use ($conn) {
$keyword = $conn->real_escape_string($keyword); // Prevent SQL injection
return "keywords LIKE '%$keyword%'";
}, $keywords));
$sql = "SELECT title, url FROM pages WHERE $likes";
echo "Query to execute: $sql";
$query = $conn->query($sql);

关于mysql - 如何搜索多个关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34525526/

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