2013-06-13 3 views
0

내 업데이트 성명서가 내 데이터베이스를 업데이트하는 것처럼 보이지만 왜 다른 스크립트에서 동일한 코드를 사용했는지 잘 모르겠습니다. 내가 수동으로 만 테스트하면 phpMyAdmin을 사용하여 데이터베이스에 쿼리를 입력 해봤PDO UPDATE가 데이터베이스를 업데이트하지 않습니다.

try 
{ 
    // update the live documents details 
    $sth = $conn->prepare("UPDATE docs SET ref = :ref, rev = :rev, updated = :updated WHERE id = :id"); 
    $sth->bindParam(':ref', $ref); 
    $sth->bindParam(':rev', $rev); 
    $sth->bindParam(':updated', $date); 
    $sth->bindParam(':id', $currentid); 
    $sth->execute(); 
} 
catch(Exception $e) 
{ 
    throw new Your_Exception($e->getMessage()); 
    // or 
    throw $e; 
} 

내가 올바른 내 테이블 이름이 예상대로 쿼리 작업을 수행합니다.

UPDATE docs SET ref = 'FMS', 
rev = 'D', 
updated = NOW() WHERE id =73 

이렇게하면 내 PDO 명세서에 오류가 있다고 생각합니다. try catch 블록이 오류를주지는 않지만.

+0

에이 던져 오류를 볼 수 있도록 당신은 당신의 PHP 코드에서 쿼리를 인쇄 봤어? – ajtrichards

+0

"updated"에 문자열 "NOW()"를 바인딩하는 경우 PHP Datetime 형식을 사용하는 대신에 문제가있을 수 있습니다. –

+0

@RoyalBg date_default_timezone_set ('UTC')와 같은 날짜를 전달합니다. $ date = date ("Y-m-d"); $ date 변수를 사용하여 PDO 문 – twigg

답변

2

은 (슬로우가) 쿼리에 오류

  • 이 기준과 일치하는 데이터가없는이 모든 가능한 이유

    • 있다.
    • 데이터가 이미 업데이트되었으므로 변경할 사항이 없습니다.
    • 업데이트중인 테이블/데이터베이스를 확인하지 않습니다.

    나열된 모든 문제를 확인하십시오. 그런데

    , 당신은 configure PHP properly

  • +0

    안녕하세요, 도와 주셔서 감사합니다. 지금 내 데이터베이스에 연결하는 모습. { $ conn = new PDO ("mysql : host = $ dbhost; dbname = $ dbname", $ dbuser, $ dbpass); $ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION); } catch (PDOException $ e) { echo $ e-> getMessage(); } 위 코드에서 오류를 올바르게 처리하는 데 충분합니까? – twigg

    관련 문제