Найти количество обновлений, сделанных в 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 с помощью этого метода вы не можете распознать количество, но нет необходимости, если вы используете обновление по идентификатору.