2013-11-21 3 views
2

У меня есть таблица с текстовым столбцом myTextColumn. Я хотел бы сделать что-то в приложении PHP только в том случае, если UPDATE изменил значение. Я не использую триггеры. Есть ли лучший способ сделать это, кроме следующего? СпасибоОпределить, если 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

вы могли проверить [пострадавшую сверку] (http://php.net/manual/en/pdostatement.rowcount.php) запрос обновления – Gryphius

ответ

3

Вы можете проверить rowCount после PDO вызова. Он расскажет вам количество строк, затронутых вашим UPDATE.

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

мне нравится ваш подход больше. Спасибо – user1032531

+0

Не забудьте принять ответ, если вы не ожидаете лучшего. –

+0

Я проголосую за него и приму это сразу после того, как я его испытаю :) – user1032531

Смежные вопросы