Я написал этот код, его работа над добавлением пользователей, но для дубликата пользователя он снова сохранил значение os того же имени пользователя. Я хотел бы предоставить всплывающее сообщение, если имя пользователя уже выполнено. Я новичок, пожалуйста, помогите.Подтверждение для имени пользователя не работает
<?php
ob_start();
include("db.php");
if(isset($_POST['send'])!="") {
$username = mysqli_real_escape_string($con, $_POST['username']);
$usermail = mysqli_real_escape_string($con, $_POST['usermail']);
$usermobile = mysqli_real_escape_string($con, $_POST['usermobile']);
$bool = true;
$con = mysqli_connect("localhost","root","","demo");
$result = mysqli_query("SELECT `username` FROM `sample` WHERE username = '$username'");
if(mysqli_num_rows($result)>0)
{
Print '<script>alert("Username has been taken!");</script>';
}
if ($bool) {
$inssql = "insert into sample set
username = '" . $username . "',
emailid = '" . $usermail . "',
mobileno = '" . $usermobile . "',
created = now()";
$update = mysqli_query($con, $inssql);
}
}
Если имя пользователя должно быть уникальным, вы должны установить уникальный индекс в этом столбце базы данных. И ваш запрос SELECT должен искать только строку с этим именем пользователя, а не всеми строками. – jeroen
Прежде чем вы вставляете данные в базу данных, проверьте наличие пользователя, если счетчик больше 0, покажите сообщение об ошибке еще вставить пользователя – Sona
Ваш скрипт находится под угрозой [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Посмотрите, что случилось с [Little Bobby Tables] (http://bobby-tables.com/) Даже [если вы (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Используйте [подготовленные параметризованные утверждения] (http:// /php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly