我不能理解这一点。我给自己几个小时的试验和错误
哈哈,所以我来到这个伟大的社区寻求一些专家的帮助!我正在从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
}
]
}
发布于 2018-06-12 05:23:33
您的代码将只从table2
读取一次。第二次到达while($row2 = $result2->fetch_array(MYSQL_ASSOC)) {
循环时,将没有任何内容可供从result2
读取,因此循环将立即结束。
将table2
中的所有结果读入一个数组。然后,在每3个table1
元素之后,合并这些结果。
$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()
方法。
https://stackoverflow.com/questions/50805715
复制相似问题