代码之家  ›  专栏  ›  技术社区  ›  trh88

使用php、mysql查询两个表

  •  0
  • trh88  · 技术社区  · 14 年前

    我现在的问题是这样的:

      $result  = mysql_query("SELECT * FROM promo JOIN items ON promo.id = items.promo_id WHERE promo.id='$promo_id'") or die('Error : ' . mysql_error()); 
      while($row = mysql_fetch_array($result))
      {
      echo "<p>".$row['title']."</p>";
      echo "<p>".$row['description']."</p>";
      echo "<p>".$row['filename']."</p>";
      }
    

    最后我想说以下几点:

    • 宣传片标题1

    • 这是宣传片1的描述,是不是很棒?!

    • 文件名\u 1.jpg

    • 文件名\u 2.jpg,但有许多文件链接到此促销列表。。。

    • 这是宣传片1的描述,是不是很棒?!

    • 文件名\u 1.jpg

    • 这是宣传片1的描述,是不是很棒?!

    • 文件名\u 2.jpg

    所以它会重复(我可以理解为什么),而且根本不会把宣传片的“标题”拉进来!有人能推荐我的JOIN还是PHP的问题吗?非常感谢您的帮助:)

    2 回复  |  直到 14 年前
        1
  •  0
  •   Dubas    14 年前

    标题 在两张桌子上。

    如果使用查询:

    SELECT 
         * 
    FROM 
         promo JOIN items ON promo.id = items.promo_id WHERE promo.id='$promo_id'"
    

    字段的名称必须是 table.field . 详细说明需要获取的字段的名称非常有用,可以帮助您获取所需的数据,而不是所有的表。这使得该方法能够更快地检索行并防止名称出现问题。

    例子:

    SELECT 
       promo.title AS title,
       promo.description AS description,
       items.filename AS filename
    FROM 
        promo JOIN items ON promo.id = items.promo_id WHERE promo.id='$promo_id'"
    

    你会得到一个表格,比如(我在上面设置了想象中的数据):

    title | description | filename
    -------------------------------
    title1|description1 | filename1
    title1|description1 | filename2
    title2|description2 | filename3
    

    • 如果你有一个以上的项目每个促销所有数据是重复的每一行。

      • 您需要查询以显示每个promo的所有项目,而不重复promo数据、进行更复杂的查询或添加一些代码。
    • 如果您没有任何促销项目,则促销不会显示在列表中。

      • 您需要使用list-al-promo和by-each-list-its-own-items来显示没有项目的promo,或者使用外部连接查询。
        2
  •  0
  •   Frank Heikens    14 年前

    不要在查询中使用******,而是命名所需的列并应用适当的别名。