php - 如何使用array_merge在php中合并两个不同的mysql选择结果?
问题描述
我在 php mysql 中有两个不同的 SELECT 查询。
我想将这两个结果组合成一个对象数组。我不想使用 SQL UNION,因为在合并之前需要对结果进行一些工作。
有 php array_merge() 函数,但是当我尝试使用它时,出现以下错误:
array_merge():参数 #1 不是数组
参数是 SQL 选择查询的结果。
$result1 = "";
$result2 = "";
$merged_results = "";
$stmt = $db->prepare("SELECT col1, col2 col3 from table1");
$stmt->execute();
$result1 = $stmt->get_result();
$stmt = $db->prepare("SELECT col1, col2 col3 from table2");
$stmt->execute();
$result2 = $stmt->get_result();
$merged_results = array_merge($result1,$result2);
我的目标是一个对象数组,其中每个对象都代表 mysql select 中的一个数据集,如下所示:
[{name:"Jonny",age:23},{name:"Bonny",age:25},{name:"Flower",age:21}]
那么请如何将这些结果合并为对象数组的一个结果?
解决方案
我实际上建议您直接在 MySQL 上运行联合查询:
SELECT col1, col2 col3 FROM table1
UNION ALL
SELECT col1, col2 col3 FROM table2;
这将避免 PHP 和 MySQL 之间的额外往返。
$sql = "SELECT col1, col2 col3 FROM table1 UNION ALL ";
$sql .= "SELECT col1, col2 col3 FROM table2";
$stmt = $db->prepare($sql);
$stmt->execute();
$resultset = $stmt->get_result();
如果您还想跟踪每条记录的来源,也可以在 MySQL 上使用计算列来处理:
SELECT col1, col2 col3, 'table1' AS source FROM table1
UNION ALL
SELECT col1, col2 col3, 'table2' FROM table2;
推荐阅读
- php - 雄辩的多对多返回一个空值
- sql - 索引大表最适合性能 行或列索引
- oop - Tkinter 从 Mikhails 先生的 ScrolledWindow 的 Bryan Oakley 先生的孩子制作 PageOne
- thingsboard - MQTT - 如何更改 CE (SenML) 上 JSON 的默认解析器的行为?
- cytoscape.js - dagre网络 - 重复的边缘
- javascript - Vue.js 通过客户端渲染预取数据
- flutter - 如何在flutter中连接socketIO?
- python - 根据另一列的值创建新列
- python - 我无法在二十一点游戏中关闭我的 while 循环
- javascript - 使用 Next.js 和 Strapi 预览未发布的数据