php根据第一次查询的结果进行第二次查询

php根据第一次查询的结果进行第二次查询,php,mysql,twitter-bootstrap,Php,Mysql,Twitter Bootstrap,我正在运行引导选项卡,在第二个选项卡上,我想显示该类别中的所有其他产品,大约15条记录,下面的查询返回一条包含类别ID的记录 类别ID在产品中可用,但不确定如何编写第二个查询以返回这些记录 我将以类似的方式重复它 echo "<p>Part #: " . $row["partNo"]. " - Name: " . $row["prodName"]. "</p>"; 任何帮助都是好的 表结构 TBL产品 身份证件 零件号 prodName 类别 TBL分类 身份证件 猫名

我正在运行引导选项卡,在第二个选项卡上,我想显示该类别中的所有其他产品,大约15条记录,下面的查询返回一条包含类别ID的记录

类别ID在产品中可用,但不确定如何编写第二个查询以返回这些记录

我将以类似的方式重复它

echo "<p>Part #: " . $row["partNo"]. " - Name: " . $row["prodName"]. "</p>";
任何帮助都是好的

表结构

TBL产品

身份证件 零件号 prodName 类别 TBL分类

身份证件 猫名 products.php

inc_products.php


?>

根据原始查询,如果您想从该行获取类别id并通过第二次查询选择该类别的所有其他产品,请尝试以下操作:

$secondQuery = "Select Distinct
        *
        From
        tblProducts Inner Join
        tblCategories On tblCategories.id = tblProducts.categoryID_FK
        Where partNo = $partNoid AND tblProducts.catName = $catName";

//this is the same query as before, but now with a filter for category

$allCategoryResults = $conn->query($secondQuery);

//Then just loop through the results, as suggested by RamRaider in the comments.

while($tmp = $allCategoryResults->fetch_assoc()){
    //do whatever with your results
}

更好的做法是在查询中使用类别id而不是类别名称,但如果您愿意,您可以轻松地将其替换掉。

澄清您的数据库结构并提出问题如果在gui中运行,查询会返回多少记录?您是否需要多条记录?我这样问是因为if$rs=$result->fetch_arrayMYSQLI_ASSOC{而不是while$rs=$result->fetch_arrayMYSQLI_ASSOC{所以使用与第一个选项卡n'est-ce pas?相同的逻辑。除了一个查询之外,您没有给我们太多的信息。感谢您的反馈,我现在已经更新了问题。差不多到了,我将发布我现在的内容,问题是它一遍又一遍地返回相同的记录。我更新了我的答案-我犯了一个错误-尝试将fetch_数组更改为f在您的while条件下蚀刻assoc。@詹姆斯别忘了用上下箭头向上的绿色复选标记作为已接受的答案。如果它解决了您的问题。这就是我们在堆栈上滚动的方式。
<?php
  $partNoid = intval($_GET['partNo']);

  $query = "Select Distinct
        *
        From
        tblProducts Inner Join
        tblCategories On tblCategories.id = tblProducts.categoryID_FK Inner Join
        tblSuppliers On tblSuppliers.id = tblProducts.supplierID_FK Inner Join
        users On users.id = tblProducts.userID_FK
        Where partNo = $partNoid";
  $result = $conn->query($query);

  if($result === false) {
  trigger_error('Wrong SQL: ' . $query . ' Error: ' . $conn->error, E_USER_ERROR);
  } else {
    $result->data_seek(0);

        if($rs = $result->fetch_array(MYSQLI_ASSOC)) {

            $partNo = $rs["partNo"];
            $prodName = $rs["prodName"];
            $prodDesc = $rs["prodDesc"];
            $unitPrice = $rs["unitPrice"];
            $catName = $rs["catName"];
            $discontinued = $rs["discontinued"];
            $catID = $rs["categoryID_FK"];
        }
    }
  $result->free();

  $query2 = "Select
    *
    From
    tblProducts Inner Join
    tblCategories On tblCategories.id = tblProducts.categoryID_FK
    Where $partNoid AND tblProducts.categoryID_FK = $catID";
$result2 = $conn->query($query2);

if($result2 === false) {
  trigger_error('Wrong SQL: ' . $query2 . ' Error: ' . $conn->error, E_USER_ERROR);
  } else {
    $result2->data_seek(0);

            while($rs2 = $result2->fetch_array(MYSQLI_ASSOC)) {

                $outp .= $rs2["partNo"] ;
                $outp .= ' - '   . $rs2["prodName"] . '<br>';       
        }
    }
  $result2->free();
$conn->close();
$secondQuery = "Select Distinct
        *
        From
        tblProducts Inner Join
        tblCategories On tblCategories.id = tblProducts.categoryID_FK
        Where partNo = $partNoid AND tblProducts.catName = $catName";

//this is the same query as before, but now with a filter for category

$allCategoryResults = $conn->query($secondQuery);

//Then just loop through the results, as suggested by RamRaider in the comments.

while($tmp = $allCategoryResults->fetch_assoc()){
    //do whatever with your results
}