2013-11-21 20 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。它會告訴你更新影響的行數。

$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

相關問題