MySQL — какой код в php, чтобы проверить, существует ли пользователь уже или нет?

Я новичок в php и mysql. Я пытаюсь проверить, если пользователь уже занят или нет. Если он взят, он не будет добавлен в базу данных. Тем не менее, я попытался много кода, чтобы сделать этот трюк, но ни один из кода, который я использовал, не работал. Я не уверен, что я делаю неправильно. Это то, что я имею сейчас:

<?php

include 'db_settings.php';

db_connect();

//Escape variables for security
$user = mysqli_real_escape_string($con, $_POST['user']);
$pass = mysqli_real_escape_string($con, $_POST['pass']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$sql="INSERT INTO users (user, pass, email)
VALUES ('$user','$pass', '$email')";if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}

echo "1 record added</br>";

mysqli_close($con);

echo "<a href='sign-up.html'>sing-up again!</a></br>";
echo "<a href='index.html'> Go Back Home </a>";

?>`

Я знаю, что этот код не имеет функции проверки для пользователя, если он уже занят или нет, потому что я удалил все коды об этом. Так что, если возможно, если бы вы могли, ребята, помочь мне, я буду признателен.

1

Решение

Ваш код, кажется, в порядке
сделать одну вещь, запустить приведенный ниже код на консоли MySQL или phpMyadmin

ALTER TABLE  `users` ADD UNIQUE (
`user`
);
1

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

Вам нужно сопоставить результаты из базы данных с запросом Select, а условия в предложении where зависят от того, на каком основании вы хотите сопоставить записи. Таким образом, вы можете попробовать что-то вроде этого

$query = "SELECT email,user FROM users where user='$user' and email='$email' ";
$result = mysql_query($query);
if (mysql_num_rows($result)) {    // user already exists   }
else {     // Insert query    }
1

<?php

include 'db_settings.php';

db_connect();

//Escape variables for security
$user = mysqli_real_escape_string($con, $_POST['user']);
$pass = mysqli_real_escape_string($con, $_POST['pass']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$sql="INSERT INTO users (user, pass, email)
VALUES ('$user','$pass', '$email')";

$checkQuery = "SELECT * from users where user='".$user."';";
$result = mysqli_query($con,$checkQuery);
if ($result) {
die("Username taken");
} else {
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}

echo "1 record added</br>";
}
mysqli_close($con);

echo "<a href='sign-up.html'>sing-up again!</a></br>";
echo "<a href='index.html'> Go Back Home </a>";

?>`
0

Сначала необходимо выполнить запрос на выборку, который доставит пользователя с опубликованным адресом электронной почты / именем пользователя и проверит, появляется ли какая-либо запись в результате или нет.

Только после этого запускается запрос на вставку.

$sql = "SELECT email FROM users where email='".$email."'";
$result = mysqli_query($con, $sql);

if (mysqli_num_rows($result) > 0) {
//user already exists
}

Существует еще один альтернативный вариант, если вы не хотите выполнять какие-либо действия в случае дублирования записей.

использование INSERT...IGNORE он не будет вставлять запись при дублировании.

0

Вы должны попробовать что-то вроде этого.

<?php
include "db_setting.php";
$user = $_POST['user'];
$pass = $_POST['pass'];
$email = $_POST['email'];

$check = mysql_query("select * from registration_table where username = $user");
$check_user = mysql_num_row($check);

if($check_user > 0)
{
echo "This username already exists";
}else
{

mysql_query("insert INTO registration_table ('user','pass','email') VALUES ($user,$pass,$email)");
}
0
По вопросам рекламы [email protected]