У меня есть страница регистрации, и я хочу, чтобы имена пользователей были уникальными. Я уже пробовал все решения, и для меня ничего не работает.
Это ошибка, которую я сейчас получаю:
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\project\projectregistered.php on line 16 Query was empty
Вот мой php:
<?php $con=mysqli_connect("localhost","root","","test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $username = $_POST['username']; echo $username; $query = mysqli_query("SELECT * FROM projectuser WHERE username='$username'"); $result1 = mysql_query($query) or die (mysql_error().$query); $count = mysql_num_rows($result1); if ($count>0) { echo 'Sorry! This Username already exists!'; } else { $surname = $_POST['surname']; $sql = "INSERT INTO projectuser (firstname, surname, username, password, location) VALUES ('$_POST[firstname]', '".mysql_real_escape_string($surname)."', '$_POST[username]', '$_POST[password]', '$_POST[location]')"; } if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } echo "1 record added ".$sql; mysqli_close($con); ?>
Поскольку вы используете процедурный подход, вам также необходимо передать дескриптор соединения в качестве первого аргумента. Должен быть
mysqli_query($con, "SELECT * FROM projectuser WHERE username='$username'");
Кроме того, сделайте столбец username
в таблице DB UNIQUE
.
Обновить:
Я просто понял, что вы используете как mysql_
так и функции mysqli_
. Лучше придерживайтесь второго. Таким образом, ваш код будет:
$query = "SELECT * FROM projectuser WHERE username='$username'"; $result = mysqli_query($con, $query); $count = mysqli_num_rows($result);
Но, как уже упоминалось выше, если вы установили свой столбец username
UNIQUE
вам не понадобится эта проверка вообще. Вы можете использовать mysqli_insert_id
после INSERT
чтобы проверить, была ли запись вставлена или нет. ЕСЛИ он не был вставлен, тогда UNIQUE
ограничение было уволено. Этот способ более эффективен, чем SELECT
сначала, чтобы проверить, существует ли имя пользователя.
Создание уникального столбца username
в таблице MySQL – это самый простой способ достичь этого
CREATE UNIQUE INDEX uname_uniq ON projectuser (username);
Это предотвратит 2 строки с одинаковым именем пользователя, на INSERT
или UPDATE
Справочник по MySQL
Большинство функций mysqli_ * ожидают, что mysqli-instance станет первым параметром.
Или вы можете использовать $ conf> function () без дополнительного параметра.
ps: Не смешивайте mysqli и mysql.
Чтобы убедиться, что имя пользователя уникально, просто добавьте уникальный индекс в столбец … (и проверьте, была ли установлена ошибка $ con>)