php - 选择所有数据而不是id

标签 php mysql

我正在开发博客网络应用程序。我不会通过文章 ID 显示类别和 slug。

$result= mysqli_query($mysqli,'SELECT articleId, articleTitle, articleSlug, 
                                        articleDescrip, articleDate, articleTags 
                                FROM blog_table 
                                ORDER BY articleId DESC');

我正在从另一个 blog_table 中选择这些列。现在,我在另一个查询中使用articleId 值。

$result2 = mysqli_query($mysqli,'SELECT categoryName, categorySlug   
                                 FROM category, cat_links 
                                 WHERE category.categoryId = cat_links.categoryId 
                                 AND cat_links.articleId = articleId');

while($row2 = mysqli_fetch_array($result2)){
    echo $row2['categoryName']; 
} 

在上面的查询中,我从另外两个表类别和 cate_links 中选择列。 while 循环正在循环所有类别而不是articleId。 我想显示与articleId相关的categoryName,但它显示所有类别。 请您解决一下,如何显示与articleId相关的类别而不是所有类别。

最佳答案

您可以仅使用单个查询来重新表述:

SELECT c.categoryName, c.categorySlug
FROM category c
INNER JOIN cat_links cl
    ON c.categoryId = cl.categoryId
WHERE
    cl.articleId IN (SELECT articleId FROM blog_table);

这将返回 blog_table 中出现的文章的所有类别元数据,对该表没有任何限制。这与您向我们展示的逻辑一致。如果 blog_table 有一些限制,那么您应该说明它们是什么。

关于php - 选择所有数据而不是id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58691405/

相关文章:

mysql - 从 3 个表中选择

javascript - Magento通过ajax将数据插入数据库

php - 优化MYSQL、PHP搜索前几天这个时间的记录

php - mysql 中的 is_unique 语法?

php - Stripe curl 命令行 POST

php - 具有两个连接和一个简单逻辑的 sql 查询

PHP PDO & SQL 搜索通配符绑定(bind)参数

mysql - SELECT * FROM table1 LEFT JOIN table1.value AS table2

python - MySQLdb 游标不支持空迭代器吗?

mysql - 删除 MySQL 表列中最多出现 2 次的所有重复项之一