У меня проблема с веб-сайтом, который я сейчас создаю: мне нужна таблица для каждого пользователя, но она не работает. Я попытался создать таблицу во время регистрации или при первом входе в систему, что тоже работает. Моя проблема связана с именованием таблицы, потому что я хочу, чтобы таблица имела следующее имя. "user_1" "Пользователь" фиксирован, и номер должен быть идентификатором пользователя. Вот как это должно выглядеть, таблица user работает без проблем, но другие таблицы не работают.
DB сейчас:
Желаемое содержимое БД:
- пользователи
- user_1
- user_2
Пользователи таблицы:
+----+--------------+-----------+------------------+---------------|
| id | first name | last name | email | password |
+------------------------------------------------------------------+
| 1 | user1 | user1 | user1@gmail.com | password Hash||
+------------------------------------------------------------------+
| 2 | user2 | user2 | user2@gmail.com | passowrd Hash |
+----+--------------+-----------+------------------+---------------+
Мои предыдущие возможности: До сих пор я пытался создать таблицу, если регистрация прошла успешно. Здесь была ошибка, я мог создать таблицу, но он создал ее под именем «user_». «Id» был просто пропущен, поэтому я могу создать таблицу.
При втором подходе я попытался сохранить значение «False» в таблице во время регистрации и проверить во время входа в систему, является ли значение «False» ", в таком случае измените это значение на" Истина "и создайте таблицу. Но здесь у меня возникла та же проблема, что и при первой попытке, когда мне не дали id.
Мой код: registration. php:
//Keine Fehler, wir können den Nutzer registrieren
if(!$error) {
$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
$statement = $pdo->prepare("INSERT INTO users (email, passwort, vorname, nachname) VALUES (:email, :passwort, :vorname, :nachname)");
$result = $statement->execute(array('email' => $email, 'passwort' => $passwort_hash, 'vorname' => $vorname, 'nachname' => $nachname));
if($result) {
$pdo = new PDO('mysql:host=localhost;dbname=fitnessstats', 'root', '');
if(isset($_GET['login'])) {
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();
//Überprüfung des Passworts
if ($user !== false && password_verify($passwort, $user['passwort'])) {
$_SESSION['userid'] = $user['id'];
include 'createPersonalTable.php';
die('<script language="javascript" type="text/javascript"> document.location="geheim.php"; </script>'); //'Login erfolgreich. Weiter zu <a href="geheim.php">internen Bereich</a>'
} else {
$errorMessage = "E-Mail oder Passwort war ungültig<br>";
}
}
//User ID
$showFormular = false;
} else {
echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
}
}
createPersonalTable. php :
<?php
session_start();
$pdo = new PDO('mysql:host=localhost;dbname=fitnessstats', 'root', '');
$selectID = $pdo->prepare("SELECT * FROM users WHERE email = $email");
$idOutput = $selectID->execute(array('id' => $useridTable));
echo "$useridTable";
$tablename = "user_" . $useridTable;
//$tablename = "user_" . $vorname . $nachname;
$createTable = "CREATE TABLE $tablename (
id INT(255) AUTO_INCREMENT PRIMARY KEY,
gewicht FLOAT,
dauer FLOAT,
anzahl INT
)";
if(mysqli_query($conn, $createTable)){
echo "Table created successfully.";
//
} else{
echo "ERROR: Could not able to execute $createTable. " . mysqli_error($conn);
}
if(isset($errorMessage)) {
echo $errorMessage;
}
?>
Думаю, основная проблема заключается в чтении ID (т.е. в этом разделе).
$selectID = $pdo->prepare("SELECT * FROM users WHERE email = $email");
$idOutput = $selectID->execute(array('id' => $useridTable));
echo "$useridTable";
Заранее спасибо