Php 如何从查询中的一个字段获取信息以用于另一个查询?

Php 如何从查询中的一个字段获取信息以用于另一个查询?,php,mysql,sql,random,Php,Mysql,Sql,Random,我仍然试图完成修复我的详细信息页面,我需要一个更多的块来修复它 我从这个问题开始 注意:recordID实际上是通过单击某个项目从上一页输入的。 此外,name、img、item_code和type_id是我的表中的字段,不在源之外 $recordID = $_GET['recordID']; $query_master_details = "SELECT * FROM master_list WHERE master_list.master_id = $recordID"; $master_d

我仍然试图完成修复我的详细信息页面,我需要一个更多的块来修复它

我从这个问题开始

注意:recordID实际上是通过单击某个项目从上一页输入的。 此外,name、img、item_code和type_id是我的表中的字段,不在源之外

$recordID = $_GET['recordID'];
$query_master_details = "SELECT * FROM master_list WHERE master_list.master_id = $recordID";
$master_details = mysqli_query($conn, $query_master_details) or die(mysqli_error());
$row_master_details = mysqli_fetch_assoc($master_details);
$totalrows_master_details = mysqli_num_rows($master_details);
现在,我创建了以下内容,以确定如何显示有关所述项目的详细信息:

<div class="container2">
  <div class="category"><h2><?php echo $row_master_details['name']; ?></h2></div>
  <?php
  $crafted = "SELECT * FROM `master_list` WHERE `type_id` <= 3 AND `length` = $row_master_details.length ORDER BY RAND() LIMIT 1";
  $result = mysqli_query($conn, $crafted);
  $crafted = array();
  if (mysqli_num_rows($result) > 0) {
      while($row = mysqli_fetch_assoc($result)) {
          $crafted[] = $row;
      }
  }
  if ($row_master_details['type_id'] > 3) {?>
    <p><strong>Code 1</strong></p>
    <p><?php echo $crafted['name']; ?></p>
    <p><img src="img/<?php echo $crafted['img']; ?>" /></p>
    <p><?php echo $crafted['item_code']; ?></p>
    <br><br>
    <p><strong>Code 2</strong></p>
    <p><?php echo $row_master_details['name']; ?></p>
    <p><img src="img/<?php echo $row_master_details['img']; ?>" /></p>
    <p><?php echo $row_master_details['item_code']; ?></p>
    <p><?php echo $row_master_details['length']; ?> Characters</p>
  <?php }else { ?>
    <p><?php echo $row_master_details['name']; ?></p>
    <p><img src="img/<?php echo $row_master_details['img']; ?>" /></p>
    <p><?php echo $row_master_details['item_code']; ?></p>
    <p><?php echo $row_master_details['length']; ?> Characters</p>
  <?php
  mysqli_free_result($master_details);
  ?>
  <?php } ?>
<!-- end .container2 --></div>

代码1

“/>



代码2

“/>

人物

“/>

人物

要解释这里发生的事情:

这将查看上一页上单击的项目,并查找有关该项目的信息。 如果它的type_id为4或更高,我需要它执行以下操作:

  • 查看当前项目的“长度”
  • 从主列表中选择类型id为1、2或3且长度与第一个匹配的所有项目
  • 选择1个随机匹配项
  • 以与第一个相同的方式输出“名称、img和item_”代码
  • 如果所选项目最初的type_id小于4,则只发布原始信息。这部分是有效的。第二个查询中的部分不存在

    我有一种感觉,我需要另外一美元,但不确定该怎么做。recordID get已附加到用作链接的图像

    有谁能帮我查询一下,这样我就能得到我想要的

    下面是一张照片,我正试图做些什么来帮助你变得更有意义:

    这是通过手动选择要匹配的项并将它们放在一起完成的。我想显示一个随机项目

    下面是当前代码的外观。这与MiK的回答是一样的:

    而不是

    $crafted = "SELECT * FROM `master_list` WHERE `type_id` <= 3
    AND `length` = $row_master_details.length ORDER BY RAND() LIMIT 1";
    
    $crafted=“从“主”列表中选择*,其中“键入id”,而不是

    $crafted = "SELECT * FROM `master_list` WHERE `type_id` <= 3
    AND `length` = $row_master_details.length ORDER BY RAND() LIMIT 1";
    
    $crafted=“从'master\u list'中选择*,其中'type\u id'
    此查询将准确地提供您所需的内容。不需要两个查询才能运行

    如果还有,则无需添加。仅在块上使用。在代码中。如果你必须添加它,只需添加if(craft\u master\u id),然后只显示该块,否则不显示

    此查询将准确地提供您所需的内容。不需要两个查询才能运行


    如果还有,则无需添加。仅在块上使用。在代码中。如果你必须添加它,只需添加if(craft\u master\u id),然后只显示该块,否则不显示

    我最终通过调整和MiK的回答解决了这个问题

    以下是我最后的代码:

    <div class="container2">
      <div class="category"><h2><?php echo $row_master_details['name']; ?></h2></div>
      <?php
      $crafted = "SELECT * FROM `master_list` WHERE `type_id` <= 3 AND `length` = ". $row_master_details['length']." ORDER BY RAND() LIMIT 1";
      $result = mysqli_query($conn, $crafted);
      $citem = array();
      if (mysqli_num_rows($result) > 0) {
          while($row = mysqli_fetch_assoc($result)) {
              $citem[] = $row;
          }
      }
      if ($row_master_details['type_id'] > 3) {?>
        <p><strong>Code 1</strong></p>
        <p><?php echo $citem[0]['name']; ?></p>
        <p><img src="img/<?php echo $citem[0]['img']; ?>" /></p>
        <p><?php echo $citem[0]['item_code']; ?></p>
        <br><br>
        <p><strong>Code 2</strong></p>
        <p><?php echo $row_master_details['name']; ?></p>
        <p><img src="img/<?php echo $row_master_details['img']; ?>" /></p>
        <p><?php echo $row_master_details['item_code']; ?></p>
        <p><?php echo $row_master_details['length']; ?> Characters</p>
      <?php }else { ?>
        <p><?php echo $row_master_details['name']; ?></p>
        <p><img src="img/<?php echo $row_master_details['img']; ?>" /></p>
        <p><?php echo $row_master_details['item_code']; ?></p>
        <p><?php echo $row_master_details['length']; ?> Characters</p>
      <?php
      mysqli_free_result($master_details);
      ?>
      <?php } ?>
    
      <p><h4>(Need a different crafted item? Refresh the page!)</h4></p>
    <!-- end .container2 --></div>
    
    
    代码1

    “/>



    代码2

    “/>

    人物

    “/>

    人物

    (需要其他精心制作的项目?刷新页面!)


    MiK提供的答案修复了查询,但结果没有显示,因为我在数组中有一个数组,必须调用内部数组。此外,我还必须修复数组名称,使其与查询不同。

    我最终通过调整和MiK的答案相结合的方式解决了这个问题

    以下是我最后的代码:

    <div class="container2">
      <div class="category"><h2><?php echo $row_master_details['name']; ?></h2></div>
      <?php
      $crafted = "SELECT * FROM `master_list` WHERE `type_id` <= 3 AND `length` = ". $row_master_details['length']." ORDER BY RAND() LIMIT 1";
      $result = mysqli_query($conn, $crafted);
      $citem = array();
      if (mysqli_num_rows($result) > 0) {
          while($row = mysqli_fetch_assoc($result)) {
              $citem[] = $row;
          }
      }
      if ($row_master_details['type_id'] > 3) {?>
        <p><strong>Code 1</strong></p>
        <p><?php echo $citem[0]['name']; ?></p>
        <p><img src="img/<?php echo $citem[0]['img']; ?>" /></p>
        <p><?php echo $citem[0]['item_code']; ?></p>
        <br><br>
        <p><strong>Code 2</strong></p>
        <p><?php echo $row_master_details['name']; ?></p>
        <p><img src="img/<?php echo $row_master_details['img']; ?>" /></p>
        <p><?php echo $row_master_details['item_code']; ?></p>
        <p><?php echo $row_master_details['length']; ?> Characters</p>
      <?php }else { ?>
        <p><?php echo $row_master_details['name']; ?></p>
        <p><img src="img/<?php echo $row_master_details['img']; ?>" /></p>
        <p><?php echo $row_master_details['item_code']; ?></p>
        <p><?php echo $row_master_details['length']; ?> Characters</p>
      <?php
      mysqli_free_result($master_details);
      ?>
      <?php } ?>
    
      <p><h4>(Need a different crafted item? Refresh the page!)</h4></p>
    <!-- end .container2 --></div>
    
    
    代码1

    “/>



    代码2

    “/>

    人物

    “/>

    人物

    (需要其他精心制作的项目?刷新页面!)


    MiK提供的答案修复了查询,但结果没有显示,因为我在数组中有一个数组,必须调用内部数组。此外,我还必须修复数组名,使其与查询不同。

    您能在这里给出两个表的模式吗?无法获得确切的问题。内部查询可以解决这个问题。你最好解释一下table@aviboy2006有两个表,但我只使用其中一个用于这些查询。第二个是供我参考的。主表是主列表。它包含以下字段:master_id、name、img、item_code、length和type_id。第二个字段仅包含解密type_id的信息。第一个编辑可以在if块if中添加第二个查询。根据理解,当类型_id>3时,您希望运行代码1和代码2。在第二次查询中,我得到了您的长度检查点,但不理解检查类型id的点。请阅读JOINs@aviboy2006,第一个查询是查找该项是否为精心编制的项。类型_id确定该信息。任何不是精心制作的项目都需要在详细信息页面上放置一个精心制作的项目。我需要两个项目的长度是相同的。字段“length”告诉我“item_code”中字符串中的字符数。两个“项目代码”必须具有相同的字符数。您能在这里给出两个表的模式吗?无法获得确切的问题。内部查询可以解决这个问题。你最好解释一下table@aviboy2006有两个表,但我只使用其中一个用于这些查询。第二个是供我参考的。主表是主列表。它包含以下字段:master_id、name、img、item_code、length和type_id。第二个字段仅包含解密type_id的信息。第一个编辑可以在if块if中添加第二个查询。根据理解,当类型_id>3时,您希望运行代码1和代码2。在第二次查询中,我得到了您的长度检查点,但不理解检查类型id的点。请阅读JOINs@aviboy2006,第一个查询是查找该项是否为精心编制的项。类型_id确定该信息。任何非精心制作的物品都需要放置精心制作的物品