Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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 while循环内部while循环MySQL_Php_Mysqli - Fatal编程技术网

Php while循环内部while循环MySQL

Php while循环内部while循环MySQL,php,mysqli,Php,Mysqli,我在MySQL中有两个表,一个存储都有一个主id键,但里面的细节不同,例如: table 1: | id | name | type | table 2: | id | secondary id | more dateails | 我正在使用的简化代码: $status = $mysqli->query("SELECT * FROM `table1`"); while($rows = $status->fetch_array(MYSQLI_BOTH)) { $id =

我在MySQL中有两个表,一个存储都有一个主id键,但里面的细节不同,例如:

table 1: | id | name | type |

table 2: | id | secondary id | more dateails |
我正在使用的简化代码:

$status = $mysqli->query("SELECT * FROM `table1`");

while($rows = $status->fetch_array(MYSQLI_BOTH)) 
{
    $id = $rows['id'];
    $conts_q = $mysqli->query("SELECT * FROM `table2` WHERE id='$id'");
    $conts_numr = $conts_q->num_rows;

    if($conts_numr==0)
    {
        //Display empty
    }
    else
    {
        while($row2 = $conts_q->fetch_array(MYSQLI_BOTH))
        {
            //Get details and display
        }
    }
}

如果第二个表没有内容,它会很好地显示,但是如果有,它会显示每个id的所有内容,而不是只显示与它相关的内容,我似乎无法找到我做错了什么。如果我发布的代码不够,我将在此处发布完整的原始代码。

如评论中所述,获取此数据的最佳方法是使用
连接

SELECT * FROM `table1` t1
INNER JOIN `table2` t2 ON t1.id = t2.id

您可能需要对返回的列等进行按摩。

对服务器表示爱意并使用联接。请正确缩进代码。你在寻求帮助,尽可能使你的文章可读。这一次我帮你做了:)谢谢你,我马上试试这个解决办法,谢谢你code@durian另外,不要忘记使用prepared语句,因为您当前的代码对SQL注入非常开放。您已经在使用MySQLi了,请多做一些努力,并学习prepared语句;)