php - 从两个表中获取数据并将它们收集在数组中并计算一个表结果的行数
问题描述
我有两个名为 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);
?>
解决方案
您可以使用 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 函数一起使用,这是理想的选择。
推荐阅读
- reactjs - 连接组件的反应单元测试用例:浅方法为空
- javascript - 使用 react-aad-msal 时来自 chokidar 的错误
- java - 在 HostnameVerifier 中信任 peerHost 是否安全?
- elasticsearch - 是否有弹性搜索查询来获取唯一的错误日志消息?
- python - 当您将函数名称作为字符串时,在 python 中运行函数
- python-3.x - 使用 tkinter filedialog.askdirectory 选择路径并使用这些路径执行脚本
- jquery - 表格中的垂直滚动条
- c - 需要决定在 C 中启动时使用哪种结构变体
- java - 一个活动数据正在传输到另一个活动
- snakemake - 根据给予蛇形管道的参数,有条件地执行一条规则或另一条规则