2016-07-21 2 views
0

PHP는 PDO를 사용하여 SQL 데이터베이스를 업데이트하고 warehouse_id의 임의 번호가 phpmyadmin 인 마지막 쿼리 만 업데이트합니다. 스크립트가 실행될 때 PHP Foreach SQL, 이중 키 업데이트를 마지막 쿼리 만 삽입하면됩니다.

페이지에 표시

(WarehouseID WarehouseCode)

3.5284454726114E+18 Demo 
3.5284455793003E+18 Temp Rework 
3.5950682694297E+18 TL-Shipments 
3.5897270029153E+18 TL-Supplier 
3.4684900596836E+18 WH1 
5 warehouses updated. 

단 하나

function updateWarehouses(){ 


    global $tvHost, $handler, $apiRequestCall, $sqlError; 


    $apiUpdateWarehouses = apiRequestCall("GET", $tvHost, "Product?pageNumber=1"); 
    $updates = 0; 
    foreach($apiUpdateWarehouses['List'] as $c){ 
     foreach($c['PerWarehouseInventory'] as $i) { 

      try { 
        $sql = $handler->prepare("INSERT INTO tv_warehouse (warehouse_id, code) VALUES (:warehouse_id, :code) ON DUPLICATE KEY UPDATE warehouse_id=:warehouse_id, code=:code"); 
        echo "<br>".$i['WarehouseID']." ".$i['WarehouseCode']; 
        $sql->execute([ 
        ':warehouse_id' => $i['WarehouseID'], 
        ':code' => $i['WarehouseCode']] 
        ); 
        $updates++; 
       } 
      catch(Exception $er) { 
        sqlError($er, $table); 
        die(); 
      } 
      } 
     } 
     echo "<br>".$updates." warehouses updated."; 
    } 

난 당신이 에코 문을 볼 수없는 입력되는 변수를 인쇄했다 입력 된 것은 warehouse_id = 2147483647이고 warehouse_code = WH1

WH1은 정확하지만 2147483647은 어디에서 왔습니까? 나머지는 왜 입력되지 않습니까?

표 형식 :

-- ----------------------------------------------------- 
-- Table `Data`.`tv_warehouse` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `Data`.`tv_warehouse` (
    `code` VARCHAR(45) NOT NULL, 
    `warehouse_id` INT(30) NOT NULL, 
    PRIMARY KEY (`warehouse_id`)) 
ENGINE = InnoDB; 

JSON :

{ 
    "List": [ 
     { 

      "PerWarehouseInventory": [ 
       { 
        "WarehouseID": 3528445472611403000, 
        "WarehouseCode": "Demo", 
       }, 
       { 
        "WarehouseID": 3528445579300286000, 
        "WarehouseCode": "Temp Rework", 
       }, 
       { 
        "WarehouseID": 3595068269429729300, 
        "WarehouseCode": "TL-Shipments", 
       }, 
       { 
        "WarehouseID": 3589727002915314000, 
        "WarehouseCode": "TL-Supplier", 
       }, 
       { 
        "WarehouseID": 3468490059683634700, 
        "WarehouseCode": "WH1", 
       } 
      ] 
     } 
    ] 
} 

이유는이를하고있는에 어떤 도움이 내가 사용하고 좋은 것 "json_decode ($ true로 데이터);"

도움이 될 경우

고맙습니다.

답변

1

뭔가 유용한 것을 발견했습니다. "2147483647"은 Int의 최대 크기입니다.

BigInt 또는 그 이상의 것을 사용하십시오.

결과가 하나 뿐인 이유는 ID가 INT이고 ID가 항상 2147483647과 같기 때문입니다. 따라서 항상 업데이트됩니다. 나는 명확하게 각이해야 좀 더 연구를 할 필요가 http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

+0

감사합니다,하지만 네 그 일 : 여기

는 링크입니다. –