Php 从两个不同的表中获取值时感到困惑
我试图获取表“类别”的列,该列与表“子类别”链接到表“项目” 由于愚蠢的错误,我被困在某个地方,因为我不知道我会错在哪里 我无法获取最后一个“while”的值。我正在使用子类别中的类别id获取类别主目录中类别名称的链接 这是我收到的警告: 警告:mysqli_fetch_array()要求参数1为mysqli_结果, 第43行C:\xampp\htdocs**\itemtable.php中给出的布尔值 这是我的代码:Php 从两个不同的表中获取值时感到困惑,php,mysql,sql,Php,Mysql,Sql,我试图获取表“类别”的列,该列与表“子类别”链接到表“项目” 由于愚蠢的错误,我被困在某个地方,因为我不知道我会错在哪里 我无法获取最后一个“while”的值。我正在使用子类别中的类别id获取类别主目录中类别名称的链接 这是我收到的警告: 警告:mysqli_fetch_array()要求参数1为mysqli_结果, 第43行C:\xampp\htdocs**\itemtable.php中给出的布尔值 这是我的代码: <form name='update' action='upda
<form name='update' action='updateitemtable.php'>
<input type='hidden' name='itemid' value='$item_id'>
<tr><td>$item_id</td>
<td><input type='text' name='itemtablename' value='$row[1]'></td>");
$rowval=mysqli_query($conn, "SELECT subcatname from subcategorymaster WHERE subcatid = $row[2]");
while($row2=mysqli_fetch_array($rowval))
{
echo"<td>$row2[0]</td>";
}
$rowvalcatid=mysqli_query($conn,"SELECT categoryid from subcategorymaster WHERE subcatid=$row[2]");
while($row3=mysqli_fetch_array($rowvalcatid))
{
$rowvalcatname=mysqli_query($conn,"SELECT categoryname from categorymaster WHERE catid=$row3[0]");
while($cat_name=mysqli_fetch_array($rowvalcatname));
echo"<td>$cat_name[0]</td>";
}
$item\u id
");
$rowval=mysqli_查询($conn,“从Subcategory主目录中选择subcatname,其中subcatid=$row[2]”);
while($row2=mysqli_fetch_数组($rowval))
{
回显“$row2[0]”;
}
$rowvalcatid=mysqli_查询($conn,“从Subcategory主目录中选择categoryid,其中subcatid=$row[2]”);
while($row3=mysqli_fetch_数组($rowvalcatid))
{
$rowvalcatname=mysqli_查询($conn,“从categorymaster中选择categoryname,其中catid=$row3[0]”);
而($cat_name=mysqli_fetch_数组($rowvalcatname));
回显“$cat_name[0]”;
}
此错误适用于查询后未找到数据的情况
您可以按如下方式更改查询行
$rowval=mysqli_query($conn, "SELECT subcatname from subcategorymaster
WHERE
subcatid = ".$row[2]."");
此错误适用于查询后未找到数据的情况
您可以按如下方式更改查询行
$rowval=mysqli_query($conn, "SELECT subcatname from subcategorymaster
WHERE
subcatid = ".$row[2]."");
当查询未返回结果时,会出现此错误。 在while循环之前检查您的结果
if($rowvalcatname){
while($cat_name=mysqli_fetch_array($rowvalcatname));
echo"<td>$cat_name[0]</td>";
}
if($rowvalcatname){
而($cat_name=mysqli_fetch_数组($rowvalcatname));
回显“$cat_name[0]”;
}
当查询未返回结果时,会出现此错误。
在while循环之前检查您的结果
if($rowvalcatname){
while($cat_name=mysqli_fetch_array($rowvalcatname));
echo"<td>$cat_name[0]</td>";
}
if($rowvalcatname){
而($cat_name=mysqli_fetch_数组($rowvalcatname));
回显“$cat_name[0]”;
}
这里的答案略有不同
你有几个问题
主要问题是,在每种情况下,您都会循环查询结果,直到结果集结束。在该阶段,您要将行分配到的值设置为FALSE。但是,您会尝试使用循环后最后一行中的值(在该阶段,它甚至不是从中获取值的数组)
我不知道为什么要在查询结果的循环中执行查询,而不是执行联接
基本上是这样的:-
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid ,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcatid=$row[2]");
<form name='update' action='updateitemtable.php'>
<input type='hidden' name='itemid' value='$item_id'>
<tr><td>$item_id</td>
<td><input type='text' name='itemtablename' value='$row[1]'></td>");
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid,
subcategorymaster.subcatname,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcategorymaster.subcatid=".$row[2]);
while($row3=mysqli_fetch_assoc($rowvalcatid))
{
echo"<td>".$row3['categoryid']."</td>";
echo"<td>".$row3['categoryname']."</td>";
}
如果您指定了想要输出的格式,我将使用脚本对其进行修改,以完全循环结果
假设您只需要类别id和类别名称(并且存在1对1的关系),则如下所示:-
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid ,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcatid=$row[2]");
<form name='update' action='updateitemtable.php'>
<input type='hidden' name='itemid' value='$item_id'>
<tr><td>$item_id</td>
<td><input type='text' name='itemtablename' value='$row[1]'></td>");
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid,
subcategorymaster.subcatname,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcategorymaster.subcatid=".$row[2]);
while($row3=mysqli_fetch_assoc($rowvalcatid))
{
echo"<td>".$row3['categoryid']."</td>";
echo"<td>".$row3['categoryname']."</td>";
}
$item\u id
");
$rowvalcatid=mysqli_query($conn,“选择子类别master.categoryid,
subcategory master.subcatname,
categorymaster.categoryname
从子类别主
左外联接类别主管
在子类别Master.categoryid=categorymaster.catid上
其中subcategory master.subcatid=“.$row[2]);
而($row3=mysqli_fetch_assoc($rowvalcatid))
{
回显“$row3['categoryid]”;
回显“$row3['categoryname]”;
}
这里的答案略有不同
你有几个问题
主要问题是,在每种情况下,都会循环查询结果,直到结果集结束。在该阶段,将行分配到的值设置为FALSE。但是,然后尝试使用循环后最后一行中的值(在该阶段,它甚至不是从中获取值的数组)
我不知道为什么要在查询结果的循环中执行查询,而不是执行联接
基本上是这样的:-
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid ,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcatid=$row[2]");
<form name='update' action='updateitemtable.php'>
<input type='hidden' name='itemid' value='$item_id'>
<tr><td>$item_id</td>
<td><input type='text' name='itemtablename' value='$row[1]'></td>");
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid,
subcategorymaster.subcatname,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcategorymaster.subcatid=".$row[2]);
while($row3=mysqli_fetch_assoc($rowvalcatid))
{
echo"<td>".$row3['categoryid']."</td>";
echo"<td>".$row3['categoryname']."</td>";
}
如果您指定了想要输出的格式,我将使用脚本对其进行修改,以完全循环结果
假设您只需要类别id和类别名称(并且存在1对1的关系),则如下所示:-
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid ,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcatid=$row[2]");
<form name='update' action='updateitemtable.php'>
<input type='hidden' name='itemid' value='$item_id'>
<tr><td>$item_id</td>
<td><input type='text' name='itemtablename' value='$row[1]'></td>");
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid,
subcategorymaster.subcatname,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcategorymaster.subcatid=".$row[2]);
while($row3=mysqli_fetch_assoc($rowvalcatid))
{
echo"<td>".$row3['categoryid']."</td>";
echo"<td>".$row3['categoryname']."</td>";
}
$item\u id
");
$rowvalcatid=mysqli_query($conn,“选择子类别master.categoryid,
subcategory master.subcatname,
categorymaster.categoryname
从子类别主
左外联接类别主管
在子类别Master.categoryid=categorymaster.catid上
其中subcategory master.subcatid=“.$row[2]);
而($row3=mysqli_fetch_assoc($rowvalcatid))
{
回显“$row3['categoryid]”;
回显“$row3['categoryname]”;
}
检查查询是否返回值。将代码更改为:
<form name='update' action='updateitemtable.php'>
<input type='hidden' name='itemid' value='$item_id'>
<tr><td>$item_id</td>
<td><input type='text' name='itemtablename' value='$row[1]'></td>");
$rowval=mysqli_query($conn, "SELECT subcatname from subcategorymaster WHERE subcatid = $row[2]");
$count1= mysqli_num_rows($rowval);
if($count1 > 0){ // check if value exist
while($row2=mysqli_fetch_array($rowval))
{
echo"<td>$row2[0]</td>";
}
}
$rowvalcatid=mysqli_query($conn,"SELECT categoryid from subcategorymaster WHERE subcatid=$row[2]");
$count2= mysqli_num_rows($rowvalcatid);
if($count2 > 0) { // check if value exist
while($row3=mysqli_fetch_array($rowvalcatid))
{
$rowvalcatname=mysqli_query($conn,"SELECT categoryname from categorymaster WHERE catid=$row3[0]");
while($cat_name=mysqli_fetch_array($rowvalcatname));
echo"<td>$cat_name[0]</td>";
}
}
$item\u id
");
$rowval=mysqli_查询($conn,“从Subcategory主目录中选择subcatname,其中subcatid=$row[2]”);
$count1=mysqli_num_行($rowval);
如果($count1>0){//检查值是否存在
while($row2=mysqli_fetch_数组($rowval))
{
回显“$row2[0]”;
}
}
$rowvalcatid=mysqli_查询($conn,“从Subcategory主目录中选择categoryid,其中subcatid=$row[2]”);
$count2=mysqli_num_行($rowvalcatid);
如果($count2>0){//检查值是否存在
while($row3=mysqli_fetch_数组($rowvalcatid))
{
$rowvalcatname=mysqli_查询($conn,“从categorymaster中选择categoryname,其中catid=$row3[0]”);
而($cat_name=mysqli_fetch_数组($rowvalcatname));
回显“$cat_name[0]”;
}
}
检查查询是否返回值。将代码更改为:
<form name='update' action='updateitemtable.php'>
<input type='hidden' name='itemid' value='$item_id'>
<tr><td>$item_id</td>
<td><input type='text' name='itemtablename' value='$row[1]'></td>");
$rowval=mysqli_query($conn, "SELECT subcatname from subcategorymaster WHERE subcatid = $row[2]");
$count1= mysqli_num_rows($rowval);
if($count1 > 0){ // check if value exist
while($row2=mysqli_fetch_array($rowval))
{
echo"<td>$row2[0]</td>";
}
}
$rowvalcatid=mysqli_query($conn,"SELECT categoryid from subcategorymaster WHERE subcatid=$row[2]");
$count2= mysqli_num_rows($rowvalcatid);
if($count2 > 0) { // check if value exist
while($row3=mysqli_fetch_array($rowvalcatid))
{
$rowvalcatname=mysqli_query($conn,"SELECT categoryname from categorymaster WHERE catid=$row3[0]");
while($cat_name=mysqli_fetch_array($rowvalcatname));
echo"<td>$cat_name[0]</td>";
}
}
$item\u id
");
$rowval=mysqli_query($conn,“从Subcategory主目录中选择subcatname,其中subcati