嘿所有所以我能够从json url更新记录并将其放入Mysql中我现在正在尝试更新记录,它只获取1个值并将所有记录更新为新值,以便更新现有记录这里只有1条记录的记录是我正在使用的
$ApiLink = "JSON URL HERE";
$json_decode = (json_decode(file_get_contents($ApiLink), true));
$output = $json_decode["character_list"];
/************************************************/
$do_stuff = $dbh->prepare("UPDATE damage_given_vehicle SET veh_id=:veh_id, veh_name=:veh_name, veh_total=:total_value, veh_faction_nc=:veh_faction_nc, veh_faction_tr=:veh_faction_tr, veh_faction_vs=:veh_faction_vs WHERE character_number = :char_id");
foreach ($output as $key => $value) {
$character_id[$key] = $output[$key]["id"];
if (isset($output[$key]["stats"]["vehicle_kills"]["vehicle"])) {
$vehicle_kills[$key] = $output[$key]["stats"]["vehicle_kills"]["vehicle"];
foreach ($vehicle_kills[$key] as $row) {
$do_stuff->bindValue(':char_id', $update_id);
$do_stuff->bindValue(':veh_id', $row["id"]);
$do_stuff->bindValue(':veh_name', $row["name"]);
$do_stuff->bindValue(':total_value', $row["value"]);
$do_stuff->bindValue(':veh_faction_nc', $row["faction"]["nc"]);
$do_stuff->bindValue(':veh_faction_tr', $row["faction"]["tr"]);
$do_stuff->bindValue(':veh_faction_vs', $row["faction"]["vs"]);
$do_stuff->execute();
}
}
}
数据库最初看起来像这样:
key | id | name | value 1 | value 2 | value 3 | value 4 |
5428029729515051201 11 name_1 6 45 23 34
5428029729515051201 11 name_2 2 34 63 63
5428029729515051201 11 name_3 34 0 17 17
使用更新脚本后,它将这些值转换为:
5428029729515051201 11 name 34 0 17 17
5428029729515051201 11 name 34 0 17 17
5428029729515051201 11 name 34 0 17 17
如果您对此脚本如何输入json数据感到好奇,请访问:
$stmt = $dbh->prepare("
INSERT INTO damage_given_vehicle (
character_number, veh_id, veh_name, veh_total,
veh_faction_nc, veh_faction_tr, veh_faction_vs)
VALUES(
:char_id, :veh_id, :veh_name, :total_value,
:veh_faction_nc, :veh_faction_tr, :veh_faction_vs)
");
foreach ($output as $key => $value) {
$character_id[$key] = $output[$key]["id"];
if (isset($output[$key]["stats"]["vehicle_kills"]["vehicle"])) {
$vehicle_kills[$key] = $output[$key]["stats"]["vehicle_kills"]["vehicle"];
foreach ($vehicle_kills[$key] as $row) {
$stmt->bindValue(':char_id', $character_id[$key]);
$stmt->bindValue(':veh_id', $row["id"]);
$stmt->bindValue(':veh_name', $row["name"]);
$stmt->bindValue(':total_value', $row["value"]);
$stmt->bindValue(':veh_faction_nc', $row["faction"]["nc"]);
$stmt->bindValue(':veh_faction_tr', $row["faction"]["tr"]);
$stmt->bindValue(':veh_faction_vs', $row["faction"]["vs"]);
$stmt->execute();
}
}
}
如何让它单独更新每个数组,如果我在任何$ row [“”]上执行var_dump它们会生成数组应该如何显示但是当它通过并进入mysql时它只能抓取1值
谢谢!
答案 0 :(得分:0)
您在哪里设置了$update_id
,表中的值是character_number
?对我而言,看起来你在每个循环中都覆盖了表的每个条目,因为你的$update_id
语句中总是有where
。因此,最后您将获得表中每个条目的最后一个循环的值。
但很难找到,因为你还没有张贴真实的桌子。