Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从两个不同的表中获取值时感到困惑_Php_Mysql_Sql - Fatal编程技术网

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

我试图获取表“类别”的列,该列与表“子类别”链接到表“项目”

由于愚蠢的错误,我被困在某个地方,因为我不知道我会错在哪里

我无法获取最后一个“while”的值。我正在使用子类别中的类别id获取类别主目录中类别名称的链接

这是我收到的警告:

警告:mysqli_fetch_array()要求参数1为mysqli_结果, 第43行C:\xampp\htdocs**\itemtable.php中给出的布尔值

这是我的代码:

    <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