Вы действительно должны решить проблему в базе данных:
create unique index idx_username on users(username);
Затем в вашем коде сделайте то, что вы делаете, а затем просто:
define('MYSQL_UNIQUE_CONSTRAINT_VIOLATION', 1062);
if (mysqli_query($con, $sql)) {
array_push($successes, "Update Success!");
} elsif (mysql_errno() == MYSQL_UNIQUE_CONSTRAINT_VIOLATION ) {
echo "Error: username $username is already taken";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($con);
}
Этот код, конечно, очень грубый, но это дает вам идею.Если ваш код внутри класса, тогда используйте const
вместо define
.
Кроме того, ваш код очень подвержен внедрению SQL.Используйте параметризованный запрос вместо использования переменной внутри строки sql.