我正在尝试将表格“ 链接与表格”子类别的列添加到表“item”。
因为我不确定自己哪里出错了所以我被困在某个愚蠢的错误中。
我无法获取最后一个“while”的值。我在子类别中使用类别ID来获取类别master中类别名称的链接。
这是警告我正在:
警告:mysqli_fetch_array()期望参数1为mysqli_result, 第43行的C:\ xampp \ htdocs ** \ itemtable.php中给出的布尔值
This is line 43 : while($cat_name=mysqli_fetch_array($rowvalcatname));(The second last line)
这是我的代码:
<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>";
}
答案 0 :(得分:0)
此错误适用于查询后未找到数据时。
您可以更改查询行,如下所示
$rowval=mysqli_query($conn, "SELECT subcatname from subcategorymaster
WHERE
subcatid = ".$row[2]."");
答案 1 :(得分:0)
当您的查询未返回任何结果时,会出现此错误。 在while循环之前检查你的结果。
if($rowvalcatname){
while($cat_name=mysqli_fetch_array($rowvalcatname));
echo"<td>$cat_name[0]</td>";
}
答案 2 :(得分:0)
这里的答案略有不同。
你有几个问题。
主要问题是,在每种情况下,您都会循环查询结果,直到结果集结束。在该阶段,您将行分配的值设置为FALSE。然而,然后你尝试使用循环后最后一行的值(在这个阶段它甚至不是一个数组来获取一个值)。
我不确定你为什么要在循环中查询查询结果而不是进行JOIN。
非常基本上是这样的: -
$rowvalcatid=mysqli_query($conn,"SELECT subcategorymaster.categoryid ,
categorymaster.categoryname
FROM subcategorymaster
LEFT OUTER JOIN categorymaster
ON subcategorymaster.categoryid = categorymaster.catid
WHERE subcatid=$row[2]");
如果您指定要输出的格式,我将使用脚本对其进行修改,以完全循环结果。
假设您只想要类别ID和类别名称(并且存在1对1的关系),那么这样的事情: -
<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>";
}
答案 3 :(得分: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>";
}
}