根据ID替换名称

时间:2019-06-08 07:42:39

标签: php mysql json

我有发送到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中做到这一点?

2 个答案:

答案 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)

用于替换每个ID的名称

您将数据作为json数组发送吗?因此,您可以像下面这样从foreach进行迭代

foreach ($jsonArray['rows']['id'] as $seatsRefIDs) {

 $query = "select * from reservation"
 $resultsSet = $connection->query($query);
 //do some thing
}