私はいつも、PHP INSERT/UPDATEコードのかなり基本的な概念に苦労してきました。INSERT / UPDATEのたびに影響を受ける行の数を常にチェックする必要があります。これは、ほとんどの場合、INSERT / UPDATEを1つしか実行しておらず、影響を受ける行が1つだけであることを確認することで修正されるよりも多くの問題が発生するように見えるためです。 。
以下は、INSERT / UPDATEを実行するための標準コードです。影響を受ける行が0になるため、ユーザーが何も変更せずにレコードを更新すると、このコードは失敗します。少なくとも1つのフィールドが変更されていることを確認するコードを記述できますが、大きなフォームではこれは非常に不格好なようで、とにかくこの番号をチェックしてエラーを実際に見つけたことがないので、本当に価値があるかどうか疑問に思っていました。
<?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');
}