Intereting Posts
Как выполнить xpdf (pdftotext.exe) на общем диске? Как изменить положение обрезки миниатюр WooCommerce? Как сериализовать пользователя в отношении аутентификации? Как написать PHP-код для вывода JSON из сканирования каталога? Отображение имени поля в модели с использованием laravel unlink PHP работает, когда файл находится в корне, а не если файл находится в папке php pdo подключен к DB2 по-разному CODEPAGE file_get_contents и CURL не могут открыть конкретный веб-сайт Как синхронизировать ролики YouTube на нескольких клиентах? В PHP найдите повторяющуюся запись в многомерном массиве, затем суммируйте значения в определенном ключе этого массива Обслуживание статического содержимого из домена Cookieless – использование субдомена и .htaccess переменная суммы php в цикле while Phalcon PHP: измените URL-адрес запроса перед его отправкой Почему PHP XPath не находит элементы таблицы, хотя Firefox показывает, что они существуют? Возможности хранения Amazon AWS EC2

Php Обеспечение уникального имени пользователя

У меня есть страница регистрации, и я хочу, чтобы имена пользователей были уникальными. Я уже пробовал все решения, и для меня ничего не работает.

Это ошибка, которую я сейчас получаю:

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>)