Я всегда боролся с довольно простой концепцией в моем PHP INSERT/UPDATE-коде. Должен ли я всегда проверять количество затронутых строк после каждого INSERT/UPDATE, потому что в подавляющем большинстве случаев я выполняю только один INSERT/UPDATE и, похоже, вызывает больше проблем, чем исправляет, проверяя, что затронута только одна строка ,PHP mysql_affected_rows() Должен ли я заботиться?
Ниже приведен мой стандартный код для выполнения INSERT/UPDATE, и этот код выходит из строя, если пользователь обновляет запись, не изменяя ничего, потому что затронутые строки будут равны 0. Я мог написать код, чтобы проверить, что по крайней мере одно поле изменилось но в больших формах это кажется очень неуклюжим, и он задавался вопросом, действительно ли это стоит того, потому что я никогда не замечал ошибок, проверяя этот номер.
<?php
$whereSql = '';
$groupSql = 'INSERT INTO';
if(isset($_POST['id']) && is_numeric($_POST['id'])){
$groupSql = 'UPDATE';
$whereSql = 'WHERE id = ' . $_POST['id'];
}
$groupSql .= ' sometable SET name="' . $name . '" ' . $whereSql;
$groupDb = mysqli_query($groupSql, $dbObject) or die("Login DB error:".mysql_error());
if(mysqli_affected_rows($dbObject) == 1){
//redirect
}else{
die('System Error');
}
-0.49 для использования 'mysql_query' в 2013 году. – cHao
Почему бы не печатать ошибку, если mysql_affected_rows ($ dbObject) == -1. Из руководства -> Возвращает количество пораженных строк при успешном завершении и -1, если последний запрос не удался. –
@cHao это устаревший код –