我无法绕过这一个。我已经给自己几个小时的审判和错误了
大声笑,所以我来到这个伟大的社区寻求专家的帮助!我从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
}
]
}
答案 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_ASSOC
,MYSQL_ASSOC
用于过时的mysql_XXX
扩展名。或者只使用方法fetch_assoc()
。