【问题标题】:How can i explode a value in database and use it in select query?如何分解数据库中的值并在选择查询中使用它?
【发布时间】:2018-11-01 14:59:08
【问题描述】:

所以,我的博客中有一个用于输入类别的复选框,其中类别值可以是多个。我使用 implode 函数将它们插入数据库。现在,如果我使用以下查询,我希望我的博客按类别过滤,它只会获取类别 ID 为单一的位置。我如何获取类别 ID 具有多个值的数据。它应该在它检查的每个类别中都可见。

public function getPublishedBlogInfoByCategory($id){
    $sql = "SELECT * FROM blogs WHERE category_id = '$id' ORDER BY id DESC";
    if(mysqli_query(Database::dbConnection(), $sql)){
        $queryResult = mysqli_query(Database::dbConnection(), $sql);
        return $queryResult;
    }else{
        die('Query problem'.mysqli_error(Database::dbConnection()));
    }
}

我正在调用该函数

<?php
require_once 'vendor/autoload.php';
$blog = new App\classes\Blog;
$app = new App\classes\Application;

$queryResultCategory = $blog->getAllPublishedCategory();

$id = $_GET['id'];
$queryResult = $app->getPublishedBlogInfoByCategory($id);
$queryResultCategoryName = $app->getBlogCategoryName($id);
$categoryName = mysqli_fetch_assoc($queryResultCategoryName);

$queryResultEvent = $app->getLimitedPublishedEvent();

?>

【问题讨论】:

  • 这将是一个放置数据透视表的好地方:有一个名为 blogs_categories 的表,其中包含 blog_id 和 category_id。
  • 我有一个名为 blog_categories 的表,复选框 (category_id) 的值来自该表

标签: php database laravel mysqli phpmyadmin


【解决方案1】:

我同意 aynber 的观点,即数据透视表可能比将多个类别 ID 连接在一起的字符串列更适合您的需求。但是,要回答你的问题,而不是

= '$id'

仅当整个字段与整个 $id 匹配时才匹配,您可能只需要使用

LIKE '%$id%'

将 % 视为通配符以匹配 $id 之前或之后的任意数量的字符

编辑:

CREATE TABLE `blog_category_pivot` (
    `blog_id` INT(11) UNSIGNED NOT NULL,
    `category_id` INT(11) UNSIGNED NOT NULL,
    PRIMARY KEY (`blog_id`, `category_id`),
    CONSTRAINT `blog_fk` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`),
    CONSTRAINT `category_fk` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
);

然后要使用数据,您只需从博客中进行选择并加入 blog_category_pivot 表以检查它是否具有给定的类别。如果你想列出你已经有一个 id 的博客的类别,你可以从加入 blog_category_pivot 表中 blog_id = $blog_id 和 category_id = categories.id 的类别中选择名称

【讨论】:

  • 嘿,谢谢,成功了。真的很感激这个:)
  • 不客气!很高兴它有帮助。虽然如果可能的话,我还是会再次推荐使用数据透视表。
  • (编辑添加了一些解释,因为我意识到我的答案相当简单):)
  • 其实我对数据透视表没有太多了解。你能给我任何链接或我可以了解的东西吗?
  • 我进行了搜索以找到一个好的教程,但一切似乎都是关于在现有表中旋转数据,所以我将在我的答案中添加一些关于如何做到这一点的信息。
猜你喜欢
  • 2020-11-08
  • 2015-02-05
  • 2023-01-18
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
相关资源
最近更新 更多