Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql根据以前的Mysql res从表中获取结果_Php_Mysql - Fatal编程技术网

Php Mysql根据以前的Mysql res从表中获取结果

Php Mysql根据以前的Mysql res从表中获取结果,php,mysql,Php,Mysql,我试图制作一个页面,在数据库中显示文章,但它是按类别组织的 类别存储在表categories中,id和category作为字段/ 文章存储在一个表articles中,该表的不同字段用于提供有关文章的各种信息 我的守则如下: <?php $sql = "SELECT * FROM `categories`"; $query = mysql_query($sql) or die("Could not get CATEGORIES ".mysql_error()); while($categ

我试图制作一个页面,在数据库中显示文章,但它是按类别组织的

类别存储在表
categories
中,id和category作为字段/ 文章存储在一个表
articles
中,该表的不同字段用于提供有关文章的各种信息

我的守则如下:

<?php

$sql = "SELECT * FROM `categories`";
$query = mysql_query($sql) or die("Could not get CATEGORIES ".mysql_error());

while($category = mysql_fetch_array($query)){

$cat = $category['category'];

$sql = "SELECT * FROM `articles` WHERE `category` = '$cat'";
$query = mysql_query($sql) or die(mysql_error());
$articles = mysql_fetch_array($query);

$size = count($articles);

echo $size;

}   

我认为您想做的事情可以更容易、更高效地完成:

<?php
$sql = "SELECT categories.name, COUNT(articles.id) AS cnt
    FROM categories
    LEFT JOIN articles ON articles.category=categories.category";
$query = mysql_query($sql);
while ($category = mysql_fetch_assoc($query)) {
    echo $category['name'].' - '.$category['cnt'];
}
?>

(当然,我不知道您的表结构,必须猜测字段名,但它应该让您了解它是如何工作的)。
关于连接,您应该阅读。

试试这个。。。也许这就是你要找的。我们也可以使用单个mysql查询找到相同的结果。
$sql = "SELECT * FROM `categories`";
$query = mysql_query($sql) or die("Could not get CATEGORIES ".mysql_error());

$result = array();
while($category = mysql_fetch_array($query)){

$cat = $category['category'];

$sql = "SELECT count(*) as numberOfArticles FROM `articles` WHERE `category` = '$cat'";
$query2 = mysql_query($sql) or die(mysql_error());

$articles = mysql_fetch_array($query2);
$category['numberOfArticles'] = $articles['numberOfArticles'];
$result[] = $category;

}   

print_r($result);

你想要什么输出?你能给我们一个输出样本吗?出于某种原因,我刚刚得到:1818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181类别。。。。这是不直接的,因为您使用了两次$query。第二个覆盖了第一个。您的脚本有一个逻辑错误。也就是说,您正在循环中使用$query,并且在while循环的条件中使用了相同的变量。您应该将循环中的$query变量重命名为其他变量。谢谢,这是我的问题:)它现在可以工作了,非常感谢!最后的目的是显示每个类别中的文章列表,所以我想我真正的问题是为什么我会得到我在评论中发布的结果。