Проверьте, если это дубликат

Я хочу проверить, если username уже существует и выдает сообщение об ошибке, если существует, какие-либо советы, как я могу это сделать?
Я уже пытался искать, но только нашел mysql_errno но это не сработает для меня.

  if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//$password = md5($password);
$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($username,$password,$role));
Database::disconnect();
header("Location: index.php");
}

SD

-1

Решение

Если вы хотите проверить, если username уже используется:

SELECT * FROM users WHERE username = :username

Если вы вернете одну строку: Вы бросаете свою ошибку, иначе ты делаешь INSERT

Итак, ваш код должен выглядеть так:

if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql_check = "SELECT * FROM users WHERE username = :username";
$test = $pdo->prepare($sql_check);
$test->bindParam(':username', $username);
$test->execute;

Теперь вот два решения, чтобы проверить, есть ли у вас одна строка:

    if($test->rowCount() > 0) {
// error
}

или же

    $user = $test->fetch();

if (!empty($user)) {
// error
}

А теперь, если у вас нет ошибки, вставьте:

    else {
//$password = md5($password);
$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($username,$password,$role));
Database::disconnect();
header("Location: index.php");
}
}
1

Другие решения

Два решения:

Вы можете сделать поле имени пользователя уникальным, таким образом, MYSQL выдаст ошибку, если вы попытаетесь вставить строку с существующим именем пользователя.

$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$result = $q->execute(array($username,$password,$role));
if(!$result) {
// print out your error message
}

В противном случае сделайте выборку с желаемым именем пользователя и посмотрите, будет ли возвращена строка (= уже используется) или нет (= доступна).

$sql = "SELECT COUNT(*) as count FROM users WHERE username = ?";
$q = $pdo->prepare($sql);
$q->execute(array($username));
$result = $q->fetchAll();
// test result, if 1 > print error, etc
0

SELECT * FROM users WHERE username = $username

Если найдена ошибка показа, вставьте еще

-2

 <?php
$getUniqueUsername=$con->query("select * from user where name='$user_name");
$rowCount=$getUniqueUsername->num_rows;

if($rowCount) {
$insertQuery=$con->query("insert into table_name (field_name) Values('".$values."'));
}
?>
-2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector