Я пытался создать новую таблицу со следующим фрагментом кода PHP / mysql:
$query = "CREATE TABLE IF NOT EXISTS :user (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
username CHAR(24),
summonername VARCHAR(16),
password VARCHAR(16),
region CHAR(3),
lvl INT(2) DEFAULT '0',
maxlvl INT(2),
status VARCHAR(20),
enabled INT(1) DEFAULT '1',
priority INT(1) DEFAULT '0',
note VARCHAR(150)
)
";
$query_params = array (
':user' => $user,
);
Если я выполню это, я получу некоторую синтаксическую ошибку:
Ошибка: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с » testuser ‘(id INT (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, используйте’ в строке 1
Это странно, потому что я проверил синтаксис согласно официальной документации (http://dev.mysql.com/doc/refman/5.1/de/create-table.html), а также некоторые пользовательские примеры.
Кроме того, есть ли способ установить кодировку таблицы по умолчанию в utf8 (не для каждой отдельной строки, а для глобальной)?
Я был бы рад, если бы кто-то мог сказать мне, как исправить там ошибки синтаксиса,
Вы не можете использовать параметры для метаданных. Вы также не должны создавать таблицы для каждого пользователя. Либо добавьте поле для хранения пользователя, либо очистите имя таблицы самостоятельно.
Со ссылкой на мой комментарий выше и в качестве примера …
CREATE TABLE my_table(i INT(4) ZEROFILL NOT NULL PRIMARY KEY);
INSERT INTO my_table VALUES (1),(9),(10),(99),(100),(999),(1000),(9999),(10000);
SELECT * FROM my_table;
+-------+
| i |
+-------+
| 0001 |
| 0009 |
| 0010 |
| 0099 |
| 0100 |
| 0999 |
| 1000 |
| 9999 |
| 10000 |
+-------+
пожалуйста, попробуйте этот запрос в создать таблицу
CREATE TABLE IF NOT EXISTS `user` (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
username CHAR(24),
summonername VARCHAR(16),
password VARCHAR(16),
region CHAR(3),
lvl INT(2) DEFAULT '0',
maxlvl INT(2),
status VARCHAR(20),
enabled INT(1) DEFAULT '1',
priority INT(1) DEFAULT '0',
)