php - 在彼此内部使用多个mysql查询循环

标签 php mysql join

我在彼此内部使用多个查询时遇到了很大的麻烦。我搜索了它但找不到我需要的东西! 所以这是我的问题。请帮助我。

我有一个名为“cat”的表,我通过 mysql 获取标题,没问题。我有另一个名为 Works 的表,其中有一个名为“Cat_ID”的字段,这是连接两个表的数据的字段。作品表还有一个名为“年份”的字段,它是艺术品的制作年份。

猫 >> { ID , 标题 , ... } 作品 >> { ID , Title , URL , Year , Cat_ID , ... }

我需要按年份对作品库进行分类,所以我编写了如下代码:

<?php
$result = q("cat");
while($row = mysqli_fetch_array($result)) { ?>
  <div>
    <h2><a href="artwork.php?id=<?php echo $row['ID'] ?>"> <?php echo $row['Title']; ?></a></h2>
    <span>
    <?php
      $sql = "SELECT DISTINCT Year FROM works WHERE Cat=".$row['Cat_ID'];
      $yresult = mysql_query($sql);
      while ($yrow = mysql_fetch_row($yresult)) 
      {
        //and print it as anchor here but it wont get into loop at all!                         
      }                         
    ?>
    </span>
  </div>
<?php } ?>

q() 是一个仅连接到数据库并运行查询的函数。这条线效果很好。 但它根本不会进入内部!我检查了一下,发现 $yrow 完全是空的(通过 php 的 EMPTY() )! 我能做什么呢?看来mysql根本无法执行第二个查询!我认为解决方案必须有两种方式。 1.让mysql执行第二个查询。 2.以明确获取年份的方式更改第一个查询,并通过 mysql_fetch_array 读取它们,并将年份作为每个年份的 anchor 。

请帮助我。

最佳答案

不要使用多个循环,而是使用INNER JOIN:

SELECT DISTINCT works.Year FROM cat INNER JOIN works ON (cat.ID = works.Cat_ID)

关于php - 在彼此内部使用多个mysql查询循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18109917/

相关文章:

javascript - 使用javascript在php中计时器达到零时不调用提交方法

mysql - mysql中的求和(IF)

mysql - 如何保持 "validity"行相对于 "expiration date"行始终更新?

mysql - 连接同一个表的多个列

mysql - SQL Left/Inner/Normal Join vs Where while 条件语句

php - jquery 电子邮件表单 submitHandler 的问题

php - PHP 脚本在哪个用户下运行?

bind_result 上的 php 空值

php - 如何从表中获取增量值

sql - 如何在三个条件下连接两个表?