Php 循环数组未给出所需的结果
我正在编写一个脚本,它从一个表(release_dates)获取信息,但也从另一个表(release_screenshots)获取X个屏幕截图的列表。然后,它将所有信息放入一个数组中,并将其编码为JSON 但是,每个JSON条目都有完全相同的屏幕截图列表 以下是我的代码片段:Php 循环数组未给出所需的结果,php,mysql,arrays,json,foreach,Php,Mysql,Arrays,Json,Foreach,我正在编写一个脚本,它从一个表(release_dates)获取信息,但也从另一个表(release_screenshots)获取X个屏幕截图的列表。然后,它将所有信息放入一个数组中,并将其编码为JSON 但是,每个JSON条目都有完全相同的屏幕截图列表 以下是我的代码片段: $json_response = array(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $row_array['id'] = $row
$json_response = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['game_title'] = $row['game_title'];
$row_array['game_platform'] = $row['game_platform'];
$row_array['game_genre'] = $row['game_genre'];
$row_array['game_publisher'] = $row['game_publisher'];
$row_array['release_eu'] = $row['release_eu'];
$row_array['release_us'] = $row['release_us'];
$row_array['rrp_gbp'] = $row['rrp_gbp'];
$row_array['rrp_eur'] = $row['rrp_eur'];
$row_array['rrp_usd'] = $row['rrp_usd'];
$row_array['link_address'] = $row['link_address'];
$row_array['logo_image'] = $row['logo_image'];
$row_array['box_art'] = $row['box_art'];
//Build incrementing variable name
$ssno = 1;
$ss = "ss_".$ssno;
//Get the list of screenshots where the referring ID is = to the current ID
$query2 = "SELECT * FROM release_screenshots WHERE parent_id = '$row_array[id]'";
$result2 = mysql_query($query2);
while($row2 = mysql_fetch_array($result2)){
$array[] = $row2;
}
//Add each Screenshot link to the array build and increment the variable name
foreach($array as $x){
$row_array[$ss] = $x['link'];
$ssno = $ssno + 1;
$ss = "ss_".$ssno;
}
$row_array['youtube_link'] = $row['youtube_link'];
$row_array['notes'] = $row['notes'];
$row_array['entry_created'] = $row['entry_created'];
array_push($json_response,$row_array);
}
echo json_encode($json_response);
我希望我已经解释得足够清楚了。如果没有,我可以提供进一步的信息。
非常感谢您的帮助。您需要在第二次
循环之前清除$array
。否则,您将从上一个游戏添加到阵列中
$query2 = "SELECT * FROM release_screenshots WHERE parent_id = '$row_array[id]'";
$result2 = mysql_query($query2);
$array = array();
while($row2 = mysql_fetch_array($result2)){
$array[] = $row2;
}
您还需要在外部循环开始时清除$row\u array
:
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$row_array = array();
...
您需要在第二个while
循环之前清除$array
。否则,您将从上一个游戏添加到阵列中
$query2 = "SELECT * FROM release_screenshots WHERE parent_id = '$row_array[id]'";
$result2 = mysql_query($query2);
$array = array();
while($row2 = mysql_fetch_array($result2)){
$array[] = $row2;
}
您还需要在外部循环开始时清除$row\u array
:
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$row_array = array();
...
您需要在第二个while
循环之前清除$array
。否则,您将从上一个游戏添加到阵列中
$query2 = "SELECT * FROM release_screenshots WHERE parent_id = '$row_array[id]'";
$result2 = mysql_query($query2);
$array = array();
while($row2 = mysql_fetch_array($result2)){
$array[] = $row2;
}
您还需要在外部循环开始时清除$row\u array
:
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$row_array = array();
...
您需要在第二个while
循环之前清除$array
。否则,您将从上一个游戏添加到阵列中
$query2 = "SELECT * FROM release_screenshots WHERE parent_id = '$row_array[id]'";
$result2 = mysql_query($query2);
$array = array();
while($row2 = mysql_fetch_array($result2)){
$array[] = $row2;
}
您还需要在外部循环开始时清除$row\u array
:
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$row_array = array();
...
不是两个查询,而是执行一个连接两个表的查询。。。。是的,只需一次查询就可以节省时间(加快页面速度)。但是你能不能提供“SHOW CREATE TABLE release_screenshot”或者澄清一下“parent_id”在人类语言中的含义?@Barmar-我对MYSQL和PHP都很陌生。我知道连接表是什么,但我不知道如何通过连接表来实现我想要实现的目标。@v.sheldeshov“parent_id”是release_屏幕截图表中的一列名称。它用于引用屏幕截图所属条目的id。请参阅:不要执行两个查询,而是执行连接两个表的单个查询。。。。是的,只需一次查询就可以节省时间(加快页面速度)。但是你能不能提供“SHOW CREATE TABLE release_screenshot”或者澄清一下“parent_id”在人类语言中的含义?@Barmar-我对MYSQL和PHP都很陌生。我知道连接表是什么,但我不知道如何通过连接表来实现我想要实现的目标。@v.sheldeshov“parent_id”是release_屏幕截图表中的一列名称。它用于引用屏幕截图所属条目的id。请参阅:不要执行两个查询,而是执行连接两个表的单个查询。。。。是的,只需一次查询就可以节省时间(加快页面速度)。但是你能不能提供“SHOW CREATE TABLE release_screenshot”或者澄清一下“parent_id”在人类语言中的含义?@Barmar-我对MYSQL和PHP都很陌生。我知道连接表是什么,但我不知道如何通过连接表来实现我想要实现的目标。@v.sheldeshov“parent_id”是release_屏幕截图表中的一列名称。它用于引用屏幕截图所属条目的id。请参阅:不要执行两个查询,而是执行连接两个表的单个查询。。。。是的,只需一次查询就可以节省时间(加快页面速度)。但是你能不能提供“SHOW CREATE TABLE release_screenshot”或者澄清一下“parent_id”在人类语言中的含义?@Barmar-我对MYSQL和PHP都很陌生。我知道连接表是什么,但我不知道如何通过连接表来实现我想要实现的目标。@v.sheldeshov“parent_id”是release_屏幕截图表中的一列名称。它用于引用屏幕截图所属条目的id。看:太棒了!但是,在此处添加行“$array=array();”后,我仍然得到相同的结果。您还需要重置$row\u array
。太棒了!这非常有效。非常感谢,;非常感谢:)太好了!但是,在此处添加行“$array=array();”后,我仍然得到相同的结果。您还需要重置$row\u array
。太棒了!这非常有效。非常感谢,;非常感谢:)太好了!但是,在此处添加行“$array=array();”后,我仍然得到相同的结果。您还需要重置$row\u array
。太棒了!这非常有效。非常感谢,;非常感谢:)太好了!但是,在此处添加行“$array=array();”后,我仍然得到相同的结果。您还需要重置$row\u array
。太棒了!这非常有效。非常感谢,;非常感谢:)