确定SQL UPDATE是否更改了列的值

时间:2013-11-21 14:51:26

标签: php mysql sql pdo

我有一个名为myTextColumn的文本列表。我想只在UPDATE更改了值时才在PHP应用程序中执行某些操作。我没有使用触发器。除了以下之外,还有更好的方法吗?谢谢

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');
}

1 个答案:

答案 0 :(得分:4)

您可以在PDO通话后查看rowCount。它会告诉你UPDATE影响的行数。

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