显示类别的帖子有问题

时间:2015-09-04 14:19:37

标签: php

my `cats` table: id - title
my `posts` table: id - title - content - cat

插入帖子时选择的类别如下:

cat1id-cat2id-cat3id

例如:1-2-3或2-3-1或2-1-3

无效代码:

<?php
    $id=mysql_real_escape_string($_GET['id']);
    $query=mysql_query("SELECT * FROM `posts` WHERE `cat`='{$id}-'");
    $query=mysql_fetch_array($query);
?>

如何显示某个类别的帖子?

1 个答案:

答案 0 :(得分:1)

首先,don't use the mysql_* set of functions - 不推荐使用它们。查看PDO

其次,对于您的查询,您更容易受到数据库体系结构问题的困扰。恕我直言,你应该有一个posts表,一个categories表和一个post_categories表,可以让你为一个帖子分配一个或多个类别。当你这样做时,你有更多的控制权。

最后,要回答您的问题,当您在查询中使用equals运算符时,它会查找完全匹配。要匹配部分文本,您很可能需要使用LIKE运算符,如下所示:

$query = "
    SELECT *
    FROM posts
    WHERE
        cat LIKE '$id-%'   OR
        cat LIKE '%-$id-%' OR
        cat LIKE '%-$id'   OR
        cat LIKE '$id'
";

它解决了在连接列表的开头,中间或末尾找到的类别(虽然我畏缩地看着它)。

但严重的是,看看你的数据库结构是否重构,所以你甚至没有这个问题。