У меня есть регистрация, где для каждого человека, который регистрируется, получает уникальный идентификатор пользователя. этот идентификатор пользователя не должен повторяться, чтобы у каждого человека был уникальный идентификатор. Идентификатор пользователя затем вставляется в 2 разные таблицы. Но каждый раз, когда новый человек регистрирует номер для идентификатора пользователя в базе данных, всегда возвращается 0.
вот мой код:
$userid = '';
function randomDigits($length){
$numbers = range(0,10000000);
shuffle($numbers);
for($i = 0; $i < $length; $i++){
global $digits;
$userid .= $numbers[$i];
}
return $userid;
}
$query = "INSERT INTO Users (user_id, user_type, name, lastname, email, phone, address, apt, city, state, zip, username, password) VALUES ('$userid','parent','$name', '$lastname', '$email', '$phone', '$address', '$apt', '$city', '$state', '$zip', '$username', '$hash')";
$result = mysqli_query($query);
$sql = "INSERT INTO dancers (user_id, name, dancer_name, dancer_middlename, dancer_lastname, dancer_age, dancer_dob, dancer_number, school_code, teacher_name, class_location, date_enrolled, date_comp) VALUES ('$userid', '$name', '$dancer_name', '$dancer_middlename', '$dancer_lastname', '$dancer_age', '$dancer_dob', '$dancer_number', '$schoolcode', '$teacher', '$location', '$date_enrolled', '$date_comp')";
$result2 = mysqli_query($sql);
if(!$result = $con->query($query)){
die('there was an error running query [' . $con->error . ']');
}else {
// header("location: thankyou.html");
}
if(!$result2 = $con->query($sql)){
die('there was an error running query [' . $con->error . ']');
}else {
header("location: thankyou.html");
}
}
EDIT
Сначала я использовал автоинкремент, но у меня это не получалось. Проблема в том, что да, он автоматически увеличивается для таблицы Users, но мне нужно ЖЕ ИДЕВОЙ идентификатор пользователя из таблицы Users, который также должен быть вставлен в таблицу Dancers.
Таблица танцоров должна иметь свой уникальный идентификатор, а также идентификатор пользователя. Это важно, потому что пользователи могут удалять танцоров и их страницы, поэтому в изобретении, что кто-то удаляется, автоинкремент не работает.
Поэтому изначально, когда я использовал автоматическое увеличение для пользователей, это было так, как оно будет вставлено, а 3 было удалено.
ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ
user-id | user-type | name | etc |
1 | parent | Ashley | etc |
2 | parent | Liz | etc |
4 | parent | Chris | etc |
СТОЛ ТАНЦОВ
id | user-id | name | dancer name |
1 | 0 | Ashley | Ben |
2 | 0 | Liz | Tom |
3 | 0 | Chris | Meg |
Но это то, что должно быть:
ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ
user-id | user-type | name | etc |
1 | parent | Ashley | etc |
2 | parent | Liz | etc |
4 | parent | Chris | etc |
СТОЛ ТАНЦОВ
id | user-id | name | dancer name |
1 | 1 | Ashley | Ben |
2 | 2 | Liz | Tom |
3 | 4 | Chris | Meg |
РЕДАКТИРОВАТЬ 2 С ОТВЕТОМ
Я использовал приближенный D в ответе Дамиана Пабло Гонсалеса.
Вот правильный код:
$userId = rand(1,9999999);
$check_userId ="select count(*) count from Users where user_id = " .
$userId;
while ($row['count'] > 0);
$query = "INSERT INTO Users (user_id, user_type, name, lastname, email, phone, address, apt, city, state, zip, username, password) VALUES ('$userid','parent','$name', '$lastname', '$email', '$phone', '$address', '$apt', '$city', '$state', '$zip', '$username', '$hash')";
$result = mysqli_query($query);
$sql = "INSERT INTO dancers (user_id, name, dancer_name, dancer_middlename, dancer_lastname, dancer_age, dancer_dob, dancer_number, school_code, teacher_name, class_location, date_enrolled, date_comp) VALUES ('$userid', '$name', '$dancer_name', '$dancer_middlename', '$dancer_lastname', '$dancer_age', '$dancer_dob', '$dancer_number', '$schoolcode', '$teacher', '$location', '$date_enrolled', '$date_comp')";
$result2 = mysqli_query($sql);
if(!$result = $con->query($query)){
die('there was an error running query [' . $con->error . ']');
}else {
// header("location: thankyou.html");
}
if(!$result2 = $con->query($sql)){
die('there was an error running query [' . $con->error . ']');
}else {
header("location: thankyou.html");
}
}