以下是什么mysql错误?

时间:2013-01-05 18:44:25

标签: php mysql create-table

这是为了创建一个名为用户id的新表

$tablename=$_SESSION['lgn-id'];

mysql_query("CREATE TABLE $tablename(
qtno INT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(qtno),
 qt VARCHAR())")
 or die(mysql_error());  

echo " so I created one!";

它显示以下错误表名称为text36.txt@gmail.com

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'@ gmail.com附近使用正确的语法(qtno INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(qtno),qt V'在第1行

3 个答案:

答案 0 :(得分:4)

问题在于不带引号的表名以及VARCHAR()。它必须有一个长度,例如VARCHAR(100)

答案 1 :(得分:0)

从错误中可以看出问题很明显,你的表名中不能有@个字符。

你可以用反引号来包装它来解决这个问题。您还需要指定varchar()

的长度

参考:9.2. Schema Object Names11.1.6.1. The CHAR and VARCHAR Types

答案 2 :(得分:0)

您的create语句应为

CREATE TABLE `$tablename`(
qtno INT(10) NOT NULL AUTO_INCREMENT, 
qt VARCHAR(100),
PRIMARY KEY(qtno))

为每个用户创建单独的表是个坏主意,假设你有1000多个用户,你想创建1000多个表吗?为UserId, Post之类的帖子创建表,并从用户表中存储用户ID并发布

您可以创建像

这样的帖子表
CREATE TABLE UserPosts
(
   id INT(10) NOT NULL AUTO_INCREMENT,
   UserId Varchar(100),
   UserPost varchar(1024),
   InserDate DateTime,
   PRIMARY KEY(id)
)

然后你可以做

select UserId, UserPost FROM UserPosts Where UserId = 'text36.txt@gmail.com'