안녕하세요. 저는 json URL에서 레코드를 업데이트하고 Mysql에 넣을 수있게되었습니다. 이제 레코드를 업데이트하려고 시도하고 있습니다. 단지 하나의 값만 가져오고 모든 레코드를 새로운 값으로 업데이트합니다 나는 그것이로 그 값을 변 업데이트 스크립트를 사용 후json을 통해 mysql 데이터 업데이트
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
: 그래서 그 여기에 단지 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();
}
}
}
을 사용하고 무엇 :
스크립트가 여기에 JSON 데이터를 입력하는 방법을 궁금해하는 경우 63,2105428029729515051201 11 name 34 0 17 17
5428029729515051201 11 name 34 0 17 17
5428029729515051201 11 name 34 0 17 17
당신은 갈 :
$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();
}
}
}
를 나는 내가 $ 행의에 위해서 var_dump를 할 경우는, 별도로 각 배열을 업데이트하려면 어떻게합니까 [ ""그들은 배열을 어떻게 표시해야하는지 알 수 있지만, mysql을 통해 들어가면 1 값만 가져옵니다.
고맙습니다!
실제 mysql 테이블을 게시 하시겠습니까? $ update_ID는 각 행에 공통적 인 기본 키입니다. – SecretSquirrel
상단에 게시 한 코드에 설정되지 않았기 때문에'$ update_id'를 어디에 설정했는지 알면 도움이됩니다. 'WHERE' 절에서 업데이트하려는 행과 정확히 일치하는 것이 중요합니다. 그렇지 않으면 모든 행에서 잘못되거나 모든 행이 업데이트됩니다. –
이것은 $ 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