我有发送到PHP的JSON字符串:
{
"total":2,
"rows":[
{
"id":431,
"firstlastname":"Big Ben"
},
{
"id":477,
"firstlastname":"Small Ann"
}
]
}
如何将JSON解码为数组,然后循环行,对于每次迭代查询ID匹配的名称,并替换MySQL数据库中的firstlastname值?换句话说,我需要根据ID(示例中的431和477)从MySQL数据库中替换firstlastname。请问如何在PHP中做到这一点?
答案 0 :(得分:-1)
您可以将json_decode()
与assoc
标志true
一起使用
这是一个例子:
json_decode($json, true)
json_dedoce() refrence
修改
我想帮助周围的人并给他们正确的答案是不值得的,因为他们只能复制和粘贴并投下赞成票...
这就是您想要的...
$json = '{
"total":2,
"rows":[
{
"id":431,
"firstlastname":"Big Ben"
},
{
"id":477,
"firstlastname":"Small Ann"
}
]
}';
# parse json to assoc array
$array = json_decode($json, true);
# map through the array and change value of firstlastname
$array = array_map(static function ($item) {
$item['firstlastname'] = 'Your desired first last name...';
return $item;
}, $array['rows']);
如果执行var_dump,则应得到此结果...
array:2 [▼
0 => array:2 [▼
"id" => 431
"firstlastname" => "Your desired first last name..."
]
1 => array:2 [▼
"id" => 477
"firstlastname" => "Your desired first last name..."
]
]
我不知道您使用的是什么php框架,但我为您提供了原始代码以进行批量更新
UPDATE your_table_name
SET firstlastname =
(CASE id WHEN 431 THEN 'Your desired first last name...'
WHEN 477 THEN 'Your desired first last name...'
END)
WHERE id IN (431,477);
答案 1 :(得分:-2)
您将数据作为json
数组发送吗?因此,您可以像下面这样从foreach
进行迭代
foreach ($jsonArray['rows']['id'] as $seatsRefIDs) {
$query = "select * from reservation"
$resultsSet = $connection->query($query);
//do some thing
}