gpt4 book ai didi

PHP/MySQL 搜索

转载 作者:行者123 更新时间:2023-11-30 00:09:03 26 4
gpt4 key购买 nike

我遇到了一个绊脚石,希望其他 stackoverflow 的人能够帮助我。我正在尝试设置类别搜索。我有一个分配给产品的类别的数值,并且一切都很完美,但是当我加载类别时,我只能看到实际分配给该 id 的内容,而不是我需要它执行的子目录。

Category db layout
-category_id
-category_name
-parent_id
-categoryslug
-subcategory

Example for database would be
-category_id = 1
-category_name = test
-parent_id = NULL
-categoryslug = test
-subcategory = 2,3,4

我需要显示 2、3、4 以及类别 1 的结果。下面是我需要帮助的 SQL 语句

function searchCategory($q, $start, $end, $categoryid) {
include $_SESSION['db'];
$q = $str = (!empty($_GET['q']) ? preg_replace('/[,\s+]/', '%', $_GET['q']) : '');
if($categoryid == '') {$categoryid = '%'; }
try {
$sql = "SELECT id, maincategory, title, description, qty, price, featphoto FROM products
WHERE CONCAT(
REPLACE(title, ' ',''),
REPLACE(description, ' ','')
)
LIKE :category
AND (maincategory = :maincategory)
LIMIT ".$start.", 12";
$s = $pdo->prepare($sql);
$s->bindValue(':category', '%'.$q.'%');
$s->bindValue(':maincategory', $categoryid);
$s->execute();
}
catch (PDOException $e)
{
$error = 'Error.' . $e->getMessage();
moduleError($error);
exit();
}
include('tpl/search.tpl.php');
}

最佳答案

从您的问题来看,您似乎想要获得与您的类别相匹配的结果以及与其子类别相匹配的结果。

您可以使用 in 子句,这里是 in clause tutorial 的链接。

您的查询可能如下所示

    $sql = "SELECT id, maincategory, title, description, qty, price, featphoto FROM products
WHERE CONCAT(
REPLACE(title, ' ',''),
REPLACE(description, ' ','')
)
LIKE :category
AND (maincategory = :maincategory OR category IN (SELECT subcategory FROM products WHERE maincategory =:maincategory))
LIMIT ".$start.", 12";

添加位的作用是执行一个子查询,获取某个类别的所有子类别,然后如果其中任何一个子类别与类别匹配,则该行将是可能的行。

在您的示例中,子查询将获得 [2,3,4]。然后,任何没有(或确实)具有相同主类别但具有 2,3 或 4 个类别的类别都会显示在您可能的结果中,您将偏移量限制为 12 个结果。

关于PHP/MySQL 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24236089/

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