Как определить, удалось ли выполнить запрос на обновление MySQL, когда данные, переданные в запросе, такие же, как и в базе данных?

Допустим, у вас есть форма с предварительно заполненными данными из вашей базы данных, и вы позволяете своим пользователям вносить изменения и сохранять форму. Если пользователь нажимает кнопку сохранения без внесения каких-либо изменений, MySQL фактически не выполняет операцию записи, и поэтому affected_rows вернет 0.

Я понимаю поведение, но какова наилучшая практика для определения того, произошло ли обновление, отличное от проверки числа affected_rows?

Какова наилучшая практика для дифференциации между фактическим завершением обновления и тем, что «удалось», но привело к 0 affected_rows, чтобы я мог предоставить обратную связь пользователю?

    Просто проверьте, не возникли ли ошибки после выполнения запроса.
    Если вы используете mysql , проверьте mysql_error () :
    if (!mysql_error()) print 'all is fine';
    То же самое для mysqli .

    Вариант 1:

     mysql_query() or die('error'); 

    Вариант 2:

     $conn = mysql_query(); if(!$conn) {//Error code here} 

    Вариант 3:

     try { $conn = mysql_query(); if (!$conn) throw new Exception("mysql Error"); } catch(Exception $e) { echo $e->getMessage(); } 

    [affected_rows ()] [1] – -1, если запрос завершается с ошибкой, а не ноль.

    [1]: http://www.php.net/manual/en/function.mysql-affected-rows.php

    Он может возвращать 0, если никакие изменения не были сделаны в строке (одинаковые значения), или если mysql не нашел строку для обновления. Он будет возвращать только -1 из-за синтаксиса erro

    если обновление «сбой» из-за синтаксической ошибки или другой mysql вернет код ошибки в фактическом запросе mysql, а affected_rows вернется с еще одной ошибкой.

    Например, Php:

     $qry = mysql_query("update blah where IamaSyntaxerror,33"); if ($qry === FALSE) { echo "an error has occured"; } else { mysql_affected_rows() == 0 means no updates occured