1: когда вы делаете '$ query = "SELECT * FROM users" ", вы получаете все записи в вашей таблице без какого-либо фильтра по пользователю.
2: лучше проверить сообщение в 'if (isset ($ _ POST [' regbutton ']))' вы вставляете значение без проверки в базу данных.
3: 'if ($ user == $ username) {echo "Имя пользователя уже существует"; ' Вы проверяете одно значение на массив объектов из базы данных;
Чтобы исправить это:
<?php
$db= new mysqli('localhost', 'root', '', 'mytrackz');
if (isset($_POST['regbutton']))
{
$username= $_POST['username'];
$email= $_POST['email'];
$password= $_POST['password'];
$query= "SELECT * FROM users WHERE username = '$username'";
$result2= mysqli_query($db, $query);
$user= mysqli_fetch_assoc($result2);
if ($user['username'] == $username){
echo "Username already exists";
}else{
$sql= "INSERT INTO users (username, email, password) VALUES ('$username','$email', '$password')";
$result= mysqli_query($db, $sql);
}
}