如何比较两个表中的数据并显示一个表中的数据

3phpmpom  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(329)

我有两张表,结构如下:

categories
    id
    status
    name
    created
posts
    id
    status
    category_id
    title
    excerpt
    featured_image
    created
user_authors
    id
    status
    author_name
    created

我正在使用以下查询:

$query = "SELECT posts.id, posts.category_id, user_authors.author_name, posts.user_author_id, posts.title, posts.post_slug, posts.featured_image, posts.excerpt, posts.created FROM posts, user_authors INNER JOIN categories ON(posts.category_id = categories.id) WHERE posts.status = 1 AND categories.name LIKE = %".$_GET['category']."%";

我想做的是,我有一个网址 www.xyz.com/technology 其中技术是一个参数(类别),根据我将选择的职位显示。
我把数据显示在哪里 posts.category_id = categories.id AND category_name = $_GET['category'] 我无法提取任何数据,我很困惑,我的查询是错误的还是我的逻辑是错误的?
有人能帮我解决这个逻辑吗?

v1uwarro

v1uwarro1#

您的查询具有 =LIKE 这在mysql中是不正确的。正确的方法应该是,

categories.name LIKE '%". $_GET['category']."%'"

注意移除 = 并用 ' 编辑:
根据您的回复,新的查询应该如下所示。

SELECT posts.id, posts.category_id, user_authors.author_name, posts.user_author_id, posts.title, posts.post_slug, posts.featured_image, posts.excerpt, posts.created 
FROM posts INNER JOIN categories ON posts.category_id = categories.id
INNER JOIN user_authors ON posts.id = user_authors.id 
WHERE posts.status = 1 AND categories.name LIKE '%".$_GET['category']."%'"
j5fpnvbx

j5fpnvbx2#

考虑从select中删除用户\u author,因为在命令中没有链接三个表的连接。

fxnxkyjh

fxnxkyjh3#

你不能使用 =LIKE 条款和你没有写任何关系 posts 以及 user_authors table。
正确的查询应该是:

$query = "SELECT posts.id, posts.category_id, user_authors.author_name, posts.user_author_id, posts.title, posts.post_slug, posts.featured_image, posts.excerpt, posts.created FROM posts INNER JOIN user_authors ON (user_authors.id = posts.user_author_id) INNER JOIN categories ON (posts.category_id = categories.id) WHERE posts.status = 1 AND categories.name LIKE '%".$_GET['category']."%'";

如果你只找到一个 categories.name 您可以删除 % 通过查询,这将有助于mysql搜索记录,如果 categories.name 列有索引。

相关问题