То, что я уже посмотрел
Я серьезно новичок в PHP, и я надеялся, что вы, ребята, сможете указать мне правильное направление. Я прочитал следующие темы и адаптировал их ответы, но, очевидно, что-то делаю неправильно:
Создание таблицы с именем переменной php mysql
Использование переменной в качестве имени таблицы при создании таблицы в mysql
Создать таблицу mysql с неработающей переменной php
В частности, это этот блок кода, который я пытался адаптировать к своим собственным потребностям, так как это был один из немногих примеров, использующих heredocs, который мы научили использовать:
$create = <<<SQL
CREATE TABLE `$tableusername` (
`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`please` VARCHAR(50) NOT NULL,
`make` VARCHAR(50) NOT NULL,
`this` VARCHAR(50) NOT NULL,
`work` VARCHAR(50) NOT NULL
)
Моя ситуация
Я хочу, чтобы мой register.php создал новую таблицу, используя имя пользователя, которое выбрал пользователь. (Register.php недоступен, если пользователь уже вошел в систему, поэтому дубликаты таблицы никогда не будут возможны.) Позже эта таблица будет использоваться для отображения данных, содержащихся в таблице, поэтому я не установил PK, поскольку таблица никогда не будет объединена или ее содержимое будет использоваться совместно с другой таблицей. (Если окажется, что это не работает, я добавлю идентификатор с автоматическим увеличением).
Проблема
Таблица не создается.
Мой register.php РЕДАКТИРОВАТЬ: В соответствии с предложением я добавил к коду
Я получил сообщение об ошибке, касающееся синтаксиса инкапсуляции имени каждого столбца в кавычках, поэтому я удалил их, чтобы затем получить следующее сообщение об ошибке:
Could not query database1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 11
<?php
include('template.php');
if (isset($_POST['username']) and isset($_POST['password'])) {
$name = $mysqli->real_escape_string($_POST['username']);
$pwd = $mysqli->real_escape_string($_POST['password']);
$mail = $mysqli->real_escape_string($_POST['email']);
$first = $mysqli->real_escape_string($_POST['fname']);
$last = $mysqli->real_escape_string($_POST['lname']);
$query = <<<END
INSERT INTO p_users(username,password,email,fname,lname)
VALUES('{$name}','{$pwd}','
{$mail}','{$first}','{$last}')
END;
$table = <<<END
CREATE TABLE `$name` (
steps_per_day int,
energy_expenditure int,
distance_walked_per_day int,
bed_time int,
waking_time int,
hours_slept int,
num_daytime_naps int,
outdoor_temp int,
indoor_temp int
)
END;
if ($mysqli->query($table) !== TRUE) {
die("Could not query database" . $mysqli->errno . " : " . $mysqli->error);
header('Location:index.php');
}
if ($mysqli->query($query) !== TRUE) {
die("Could not query database" . $mysqli->errno . " : " . $mysqli->error);
header('Location:index.php');
}
}
$content = <<<END
<form method="post" action="register.php">
<input type="text" name="username" placeholder="username"><br>
<input type="password" name="password" placeholder="password"><br>
<input type="text" name="email" placeholder="email"><br>
<input type="text" name="fname" placeholder="first name"><br>
<input type="text" name="lname" placeholder="last name"><br>
<input type="submit" value="Register">
<input type="Reset" value="reset">
</form>
END;
echo $navigation;
echo $content;
?>