私は、ユーザーがデータベースから取得した値を編集できるようにするPHPWebアプリケーションに取り組んでいます。ユーザーが「編集」リンクをクリックすると、フィールドにデータベース内のテーブルのデータが入力されます(存在する場合)。データがない場合は、すべてのフィールドが空白で表示されます。
ユーザーが「保存」をクリックすると、フォームがPOSTに送信され、それらの値が「UPDATE」クエリを使用してデータベースに保存されます。
「影響を受ける行」をチェックして、クエリの結果をチェックします。0に等しい場合、変更は行われず、ユーザーに通知します。
ただし、ユーザーが行にすでに含まれているのとまったく同じ値で更新すると、少し問題が発生します。
たとえば、A行には、それぞれ1、2、3、4の値を持つ列A、B、C、Dがあります。
ユーザーがその行を編集し、値1、2、3、4で送信した場合、行は影響を受けず、「更新」が実際に以前と同じで、ちょうど通過したときにクエリが失敗したという出力メッセージが表示されます大丈夫。
今、私は出力で立ち往生しています:
「更新された値が古い値と同じであるか、テーブルと列の名前に問題があります。ログを確認してください。」
このエラーに関するメッセージをログに送信します。次に、ユーザーが表示できるようにクエリを出力します。
問題は、エラーに関しては、プログラムが有益であることを望んでいるということです。行が元々成功していたものとまったく同じ更新をプログラムに分類させる方法はありますか?
// construct query, execute query, check if any rows have been affected
$query = "UPDATE table SET status='$status', client='$client' WHERE key='$key'";
$result = $conn->query($query);
if(mysqli_affected_rows($conn) === 0)
{
echo "Something went wrong. Entry not updated. Check the logs.\n";
echo $query;
error_log(mysqli_error($conn));
}
$result === false
if条件内またはif条件内をチェックすることも考えまし$result === true
たが、それでうまくいくでしょうか?
どんな洞察も大歓迎です。
ありがとう!