首页 > 解决方案 > 从两个表中获取数据并将它们收集在数组中并计算一个表结果的行数

问题描述

我有两个名为 fixture_list 和 OneRecord 的表,其中 fixture_list 有 3 个名为 Team1、Team2、player 的列,而 OneRecord 有 Team1、Team2、id、status 等列,所以在这里我想选择 fixture_list 的所有数据并将它们放入数组中,而我想要根据此条件来计算行数行数,因为我只想计算一条记录的行数。我知道可以执行连接和 mysqli_multi_query() 之类的操作,但不知道如何...我想在单个查询中执行此操作,请帮助。

<?php

require_once('connect.php');

$sql = "select * from fixture_list";

if($res = mysqli_query($con,$sql)){
$result = array();

 while($row = mysqli_fetch_array($res)){

array_push($result,
array('players'=>$row[3],
 'team1_name'=>$row[1],
 'team2_name'=>$row[2]
  ));
  }
mysqli_free_result($res);
}
echo json_encode (array("list"=>$result));
mysqli_close($con);
  ?>

标签: phpmysqlmysqli

解决方案


您可以使用 sub_query 来执行此操作。我不能完全理解您的问题(尝试使用大写字母和标点符号),但这可能是要使用的格式。

$sql = "SELECT `fixture_list`.`team1_name`,
               `fixture_list`.`team2_name`,
       (
          SELECT count(`OneRecord`.`Team1`) as `total` 
          FROM `OneRecord`
          WHERE `OneRecord`.`Team1` = `fixture_list`.`Team1`
          AND `OneRecord`.`Team2` = `fixture_list`.`Team2`
       )  as `Total_Players`
FROM `fixture_list`
GROU BY `fixture_list`.`id`";

$result = array(); // keep this outside the while loop to ensure the array is made
if($res = mysqli_query($con,$sql)){
  while($row = mysqli_fetch_array($res, MYSQLI_ASSOC)){
    $result[] = $row;
  }
}

这将为您提供一个 $result 数组,如下所示:

array(
 'team1_name' => 'TEAMNAME1',
 'team2_name' => 'TEAMNAME2',
 'Total_Players'  => INTEGER_VALUE
)

INTEGER_VALUE 是子查询的行数。您可以根据自己的喜好编辑子查询的 WHERE 部分

然后你可以这样做来创建一个 json 对象:

echo json_encode($result);

这将回显它,例如,如果您将它与 Ajax 函数一起使用,这是理想的选择。


推荐阅读