2013-11-21 2 views
2

myTextColumn이라는 텍스트 열이있는 테이블이 있습니다. UPDATE가 값을 변경 한 경우에만 PHP 응용 프로그램에서 무언가를하고 싶습니다. 나는 트리거를 사용하지 않습니다. 다음과 같은 다른 방법이 있습니까? 고맙습니다SQL UPDATE가 열의 값을 변경했는지 확인

function updateTable($data) 
{ 
    $sql='SELECT id FROM myTable WHERE id=:id AND myTextColumn!=:myTextColumn'; 
    $stmt=db::db()->prepare($sql); 
    $stmt->execute($data); 
    if($stmt->fetchColumn()) { 
     $sql='UPDATE myTable SET myTextColumn=? WHERE id=?'; 
     $stmt=db::db()->prepare($sql); 
     $stmt->execute($data); 
     return true; 
    } 
    else {return false;} 
} 

if(updateTable(array('id'=>123, 'myTextColumn'=>'Some text goes here'))) 
{ 
    echo('It Changed'); 
} 
+0

당신은 내가 당신의 접근 방식보다 좋아하는 업데이트 쿼리 – Gryphius

답변

3

PDO 호출 후 rowCount을 확인할 수 있습니다. UPDATE의 영향을받는 행 수를 알려줍니다.

$sql='UPDATE myTable SET myTextColumn=? WHERE id=?'; 
$stmt=db::db()->prepare($sql); 
$stmt->execute($data); 
if ($stmt->rowCount() > 0) 
{ /* do stuff */ } 
+0

의 [영향을받는 행 개수를 (http://php.net/manual/en/pdostatement.rowcount.php) 확인할 수 있습니다. 감사합니다 – user1032531

+0

당신이 더 나은 것을 기다리고 있지 않는 한, 대답을 받아들이는 것을 잊지 마십시오. –

+0

나는 투표를하고 그것을 시험 한 후에 받아 들일 것이다. :) – user1032531

관련 문제