2014-04-22 2 views
0

내가 PDO를 사용하여 MySQL의 DB에 새 행을 삽입하기 위해이 코드를 가지고 : 표시 오류없이PDO 삽입 쿼리가 작동하지를 들어 정수

$query = INSERT INTO asset_positions (pos_asset_id, pos_latitude, pos_longitude, pos_timestamp) VALUES (:pos_asset_id, :pos_latitude, :pos_longitude, :pos_timestamp) 
$statement = $pdo->prepare($query); 
$array = [':pos_asset_id' => 1, ':pos_latitude' => -8.5, ':pos_longitude' => 125.5, ':pos_timestamp' => 1398160487]; 
$statement->execute($array); 
echo $pdo->lastInsertId(); 

쿼리를 실행합니다. 새로 삽입 된 행 ID가 에코됩니다. 그러나, 내가 DB를 보면 위도, 경도 및 타임 스탬프 만 삽입합니다. 새로 삽입 된 행의 pos_asset_id 필드가 비어 있습니다.

누군가가 문제를 지적 할 수 있습니까? 오류 메시지가 표시되지 않습니다. 나는 쓸모없이 이것을 몇 시간 동안 풀려고 노력해왔다.

ps. PDO를 사용한 것은 이번이 처음 이었으므로 나와 함께하시기 바랍니다. 감사.

편집

를 해결! asset_positions.pos_asset_idasset.asset_id 사이에 FK 관계가 있다는 것을 알지 못했습니다. 일단이 관계 제약을 제거하면 INSERT가 제대로 작동하고 pos_asset_id 값이 레코드에 삽입됩니다.

어쨌든, 모두 감사합니다! :)

+4

체크 필드 유형입니다. PDO는 여기에 할 일이 없습니다 –

+0

@ YourCommonSense, 완전히 동의합니다. 데이터베이스 필드 유형을 확인하십시오. – KinjalMistry

+0

pos_asset_id의 필드 유형은 int (11)입니다. 필드 유형을 varchar (11)로 변경하려고했지만 여전히 삽입되지 않았습니다. – shinega

답변

0

오류 잡기로 실행 해보니 무슨 일이 일어나고 있는지 더 잘 이해할 수 있습니다.

try { 
    $stmt->execute(); 
} catch (PDOException $p) { 
    echo $p->getMessage(); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 

하지만 당신의 상식과 user3540050 말이 맞아 ... 그것은 열 관련 문제에 아마

+0

시도했지만 아무것도 표시되지 않았습니다. – shinega