Php - 我需要模数运算符吗?

时间:2018-06-11 20:42:35

标签: php

我无法绕过这一个。我已经给自己几个小时的审判和错误了 大声笑,所以我来到这个伟大的社区寻求专家的帮助!我从mysql中获取数据,我想在每个第3位置输出$result2

我做错了什么?非常感谢任何帮助!

这是我的代码:

$result1 = $mysqli->query("SELECT name, age, car, FROM table1");
$result2 = $mysqli->query("SELECT name, age, car, FROM table2");

$counter = 0;
while($row = $result->fetch_array(MYSQL_ASSOC)) {
    $records[] = array('tags' => array($row));
    $counter++;

    if($counter % 3 == 0) {
        while($row2 = $result2->fetch_array(MYSQL_ASSOC)) {
            $records[] = array('tags' => array($row2));
        }
    }
}

以下是我尝试输出的内容:

{
    "tags": 
    [
        {
            "name": "Bob",
            "age": 22,
            "car": "Ford",
        }
    ]
},
{
    "tags": 
    [
        {
            "name": "Eric",
            "age": 24,
            "car": "Telsa",
        }
    ]
},    
{
    "tags": 
    [
        {
            "name": "Steve",
            "age": 39,
            "car": "GMC",
        }
    ]
},
{
    "tags": 
    [
        {
            DISPLAY TABLE 2 RESULTS HERE
        }
    ]
},
{
    "tags": 
    [
        {
            "name": "Tim",
            "age": 34,
            "car": "Jeep",
        }
    ]
},    
{
    "tags": 
    [
        {
            "name": "Sam",
            "age": 44,
            "car": "Acura",
        }
    ]
},    
{
    "tags": 
    [
        {
            "name": "Tim",
            "age": 34,
            "car": "Telsa",
        }
    ]
},
{
    "tags": 
    [
        {
            DISPLAY TABLE 2 RESULTS HERE
        }
    ]
},    
{
    "tags": 
    [
        {
            "name": "Mike",
            "age": 33,
            "car": "POS",
        }
    ]
},    
{
    "tags": 
    [
        {
            "name": "Tim",
            "age": 19,
            "car": "Saturn",
        }
    ]
},
{
    "tags": 
    [
        {
            "name": "Trish",
            "age": 64,
            "car": "BMW",
        }
    ]
},    
{
    "tags": 
    [
        {
            DISPLAY TABLE 2 RESULTS HERE
        }
    ]
}

1 个答案:

答案 0 :(得分:2)

您的代码只会从table2读取一次。第二次进入while($row2 = $result2->fetch_array(MYSQL_ASSOC)) {循环时,无法从result2读取任何内容,因此循环将立即结束。

table2的所有结果读入数组。然后在table1的每3个元素之后合并这些结果。

$records2 = array();
while ($row2 = $result2->fetch_assoc()) {
    $records2[] = array('tags' => array($row2));
}

$counter = 0;
while ($row = $result->fetch_assoc()) {
    $records[] = array('tags' => array($row));
    $counter++;

    if($counter % 3 == 0) {
        $records = array_merge($records, $records2);
    }
}

顺便说一句,你应该使用常量MYSQLI_ASSOCMYSQL_ASSOC用于过时的mysql_XXX扩展名。或者只使用方法fetch_assoc()