-1
嘿所有我所以我能夠從json url更新記錄並將其放入Mysql中,現在我試圖更新記錄,並且它只抓取1個值並將所有記錄更新爲新值所以它在這裏只有1記錄更新現有記錄就是我使用通過json更新mysql數據
$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();
}
}
}
我如何得到它seperately更新每個陣列,如果我做的var_dump在任何$行[ 「」]他們產生的數組應該如何顯示,但是當它通過並進入mysql時,它只抓取1個值
感謝!
你要我發佈實際的mysql表嗎? $ update_ID是每行通用的主鍵 – SecretSquirrel 2013-03-23 20:11:57
知道在哪裏設置'$ update_id'會很有幫助,因爲它沒有在您發佈在頂部的代碼中設置。它的關鍵在於你完全匹配你想在'WHERE'子句中更新的行。否則,每個循環都會更新錯誤的或甚至所有的行。 – 2013-03-23 20:19:14
這是$ update_id的最高部分,來自\t $ stmt = $ dbh-> query(「SELECT character_number FROM characters」); \t#設置獲取模式 \t $ stmt-> setFetchMode(PDO :: FETCH_ASSOC); \t while($ update_stats = $ stmt-> fetch()){ \t \t $ update_id = $ update_stats [「character_number」]; – SecretSquirrel 2013-03-23 22:02:24