Найти количество обновлений, сделанных в PHP

Я занимаюсь редактированием данных MySQL с использованием PHP с использованием формы.

У меня есть два текстовых поля, как имя и номер мобильного телефона. Когда я нажимаю на Edit, я получаю те же данные в текстовом поле, и ниже у меня есть кнопка Сохранить. Когда я делаю изменения, я получаю ответ как готовый, но когда я нажимаю кнопку "Изменить" и не делаю никаких изменений в текстовом поле и нажимаю "Сохранить", я получаю ответ как сбой.

Ниже приведен код кнопки SAVE.

$sql = mysql_query("
    UPDATE userInfo SET fullName='$fullName', 
    mobileNumber='$mobileNumber' 
    WHERE id=$tagNumberId"
);

if (mysql_affected_rows()==1) {
    echo "done";
} else {
    echo "fail";
}

Я беспокоюсь о mysql_affected_rows(),

Выше заставляет меня думать, что если данные в выражении UPDATE совпадают, mysql_affected_rows() вернет 0 и если данные не совпадают в операторе UPDATE, mysql_affected_rows() вернет 1.

Это правильно? Если это правильно, как бороться с тем, сделано ли обновление или нет?

2 ответа

Решение

Используйте mysqli_info сразу после выполнения запроса

$string = mysqli_info ( $link );

возвращает строку с соответствующей информацией, например, для UPDATE

Rows matched: 40 Changed: 40 Warnings: 0

в вашем случае одна строка обновлена, но без изменений, вы должны получить

Rows matched: 1 Changed: 0 Warnings: 0

Вы можете получить значение из

preg_match("/Rows matched: (\d+)/", $string, $matches);
$number_of_rows = intval($matches[1]);

Это правильно MySQL поведение ОБНОВЛЕНИЕ. Но вы можете использовать какой-нибудь хитрый трюк, если вы действительно этого хотите.

$sql = mysqli_query("UPDATE userInfo SET id=@id:=id
                    fullName='$fullName',
                    mobileNumber='$mobileNumber'
                    WHERE id=$tagNumberId");
$result = mysqli_query($link, 'select @id');
if (array(null)!==mysqli_fetch_row($result)) {
    echo "done";
} else {
    echo "fail";
}

PS Вы ДОЛЖНЫ использовать подготовленные заявления для своих заявлений.

PPS с помощью этого метода вы не можете распознать количество, но нет необходимости, если вы используете обновление по идентификатору.

Другие вопросы по тегам