我试图使用以下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(不是每一行,而是全局)?
如果有人能告诉我如何解决那里的语法错误,我会很高兴,
答案 0 :(得分:1)
您无法使用元数据参数。您也不应该为每个用户创建表。添加一个字段来保存用户,或者自己清理表名。
答案 1 :(得分:0)
参考我上面的评论,并举例说明......
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 |
+-------+
答案 2 :(得分:0)
请在create table
中尝试此查询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',
)