Enabling the MYSQLI_CLIENT_FOUND_ROWS option will make affectedRows() after UPDATE queries reflect the number of matching rows, regardless of whether any column values had to be changed. This means if the row was already in the state the query wanted to ensure, it will still be counted.
This is, I think, what callers want to know and is consistent with how Postgres, SQLite, and MSSQL behave already.