2013-05-16 2 views
0

xampp 설치시 PHP 5.4.7, MySQL 5.5.27 - 하루 종일 힘들어 다양한 UPDATE 문을 사용할 수 없게되었습니다. 읽었으며 http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers에서 예제를 시험해 보았습니다. 그리고 하나의 UPDATE (다른 해결책을 찾았습니다)를 포기했지만 아래의이 점이 무엇이 문제인지 궁금해합니다. BTW 내 모든 다른 PDO FETCHALL 쿼리PDO bindParam이 준비되지 않았습니다.

function updateThisMemberInterests($PDOdbObject, $memberId, $interests) 
{ 
try 
{ 
    $intId = 0; 
    $upInt = $connectionObject->prepare("UPDATE `member_interest` SET (`interest_id`) VALUES (:intId)"); 
    $upInt->bindParam(':intId', $intId, PDO::PARAM_INT); 
    foreach($interests as $intId) 
    { 
     $upInt->execute(); 
    } 
    $affected_rows = $upInt->rowCount(); 
    return $affected_rows; 
} 
catch (PDOException $e) 
{ 
    echo "There was a problem connecting to this database."; 
    $e->getMessage(); 
} 
} 

내 데이터베이스 설정 기능이 지정 ... 잘 작동 : PDO를 :: ATTR_EMULATE_PREPARES => false를 PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION

하지만, 캐치에서 내 에코 메시지를 제외하고 아무것도 얻지 못합니다.

튜토리얼의 지침을 잘못 해석 했어야합니다. 누군가 그것이 내게 무엇인지 말해 줄 수 있습니까?

+0

: 여기

내 코드입니다 정보. –

+2

어쨌든, 당신의 문제는 당신의 함수가'$ PDOdbObject'를 받아들이지만 함수 본문에서'$ connectionObject'를 호출한다는 것입니다. 'error_reporting'과'display_errors'를 켜면, non-object_에 대한 prepare() 멤버 함수에 _call이 보일 것입니다. rowCount()에 대한 –

+0

- 고맙습니다. 약 $ PDOdbObject, 내 데이터 레이어 파일의 이름입니다. 무슨 일이 일어나는지를 알아 내려고 시도하면서, 함수 전체를 호출 파일로 옮겼습니다. 실수로,이 함수를 호출하는 var 이름으로 게시했습니다. 실제로 이들은 모두 데이터 계층 파일에서 $ PDOdbObject입니다. 그래서 그것은 그렇지 않습니다 ... – swissphp

답변

1

ok - 오류 처리 기능이 켜져있어, 몇 가지 문제점을 발견했습니다. 특히 INSERT 및 UPDATE 구문을 혼합하고있었습니다. 결국 나는 기존 관심사를 삭제하고 새로운 관심사를 삽입하는 트랜잭션으로 문제를 해결했습니다. 이것은 잘 작동합니다. 루프 당신이 수정 제공하지 않습니다 후 나는 그래서 전화`를 rowCount()가`만`) (실행`가장 최근에 적용 확신

function updateThisMemberInterests($PDOdbObject, $memberId, $interests) 
{ 
if ($interests != 0) 
{ 
    try 
    { 
     //begin transaction 
     $PDOdbObject->beginTransaction(); 

     $delInts = "DELETE FROM `member_interest` WHERE `member_id` = $memberId"; 
     $PDOdbObject->exec($delInts); 

     $intId = 0; 
     $upInt = $PDOdbObject->prepare( "INSERT INTO member_interest (`member_id`,`interest_id`) VALUES ($memberId, :interest_id)"); 
     $upInt->bindParam(':interest_id', $intId, PDO::PARAM_INT); 
     foreach($interests as $intId) 
     { 
      $upInt->execute(); 
     } 
     //commit 
     $PDOdbObject->commit(); 
     $affected_rows = $upInt->rowCount(); 
     return $affected_rows; 
    } 
    catch (PDOException $e) 
    { 
     echo "There was a problem - rolling back this transaction."; 
     //rollback transaction 
     $PDOdbObject->rollBack(); 
     echo $e->getMessage(); 
    } 
}//more than zero interests changed 
} 
관련 문제