gpt4 book ai didi

php - 如何使用 array_merge 在 php 中合并两个不同的 mysql 选择结果?

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:45 25 4
gpt4 key购买 nike

我在 php mysql 中有两个不同的 SELECT 查询。

我想将这两个结果合并到一个对象数组中。我不想使用 SQL UNION,因为在合并之前需要对结果进行一些处理。

有 php array_merge() 函数,但是当我尝试使用它时,出现以下错误:

array_merge(): Argument #1 is not an array

参数是 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}]

那么请问如何将这些结果合并为对象数组的一个结果?

最佳答案

get_result() 是一个 mysqli 结果对象,不是你返回的数据。 http://php.net/manual/en/mysqli-stmt.get-result.php

你需要做这样的事情。

$merged_results = [];

$query = 'SELECT col1, col2 col3 from table1';
$stmt = $mysqli->stmt_init();
$stmt->prepare($query);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$merged_results[] = $row;
}

$query = 'SELECT col1, col2 col3 from table2';
$stmt = $mysqli->stmt_init();
$stmt->prepare($query);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$merged_results[] = $row;
}

var_dump($merged_results);

或者您可以使用 union 在一个查询中完成

$stmt = $db->prepare("SELECT col1, col2 col3 from table1 UNION SELECT col1, col2 col3 from table2");
$stmt->bind_param("sss",c1,c2,c3);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$merged_results[] = $row;
}

var_dump($merged_results);

关于php - 如何使用 array_merge 在 php 中合并两个不同的 mysql 选择结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54653456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com