我有这些函数来调用数据集,这些数据集使用 DB 查询来获取 Data A 并使用 CURL 来获取 Data B。
现在我设法显示输出,但不知何故数据A无法合并到数据B中。我的代码如下。
命名空间:
use \stdClass;
代码:
public function find($user = null) {
if($user)
{
// Data A
$sql = "SELECT * FROM TABLE WHERE ID = '".$user."' ";
$arr = DB::connection('mysql')->select($sql);
$resultData = new \stdClass();
foreach ($arr as $key => $value)
{
$resultData->$key = $value; // Extract Data A table
}
// Data B
$url = "http://localhost/data/curl.php?value=".$user;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result = curl_exec($ch);
curl_close($ch);
$row = json_decode($result, true);
foreach ($row as $key => $value)
{
$resultData->$key = $value; // Extract Data B
}
dd($resultData);
return true;
}
return false;
}
我的目标是将这两组数据(A 和 B)合并为一组。
如果我单独显示输出,我现在在浏览器中得到的结果是这样的。当我组合它时,它只显示数据 B :
数据A
{#310
+"0": {#213
+"id": "1"
+"name": "MIKE"
+"acc_no": "AAA001"
+"email": "[email protected]"
}
}
数据B
{#310
+"0": "CLERK"
+"TITLE": "CLERK"
+"1": "Clerk, IT Department"
+"POSITION": "Clerk, IT Department"
+"2": "Rozaimi Bin Zamahri"
+"SECTION": "Office"
}
感谢有人能帮助我。谢谢。
问题1: 不要只是将 sql 字符串与参数连接起来,它有 SQL 注入问题,如果你想将
DB::select
与参数一起使用,你可以这样做:
$sql = "SELECT * FROM TABLE WHERE ID = ? ";
$arr = DB::connection('mysql')->select($sql, [$user]);
问题2: 因为您使用的是 DB select 方法,所以它将返回一个包含对象的数组嵌套。你需要先获取对象,执行如下操作:
$arr = DB::connection('mysql')->select($sql)[0];
然后你可以通过循环合并它们,或者只是将它们转换为数组并合并它们。
试试这个:-
$data1=(object)['a','b'];
$data2=(object)['c','d'];
$result = (object) array_merge(
(array) $data1, (array) $data2);
print_r($result);