-2

这是创建一个名称为用户 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 服务器版本相对应的手册,以在第 1 行的 '@gmail.com(qtno INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(qtno), qt V' 附近使用正确的语法

4

3 回答 3

4

问题在于未引用的表名以及VARCHAR(). 它必须有一个长度,例如VARCHAR(100)

于 2013-01-05T18:50:47.433 回答
0

从错误中问题很明显,您的表名中不能有@字符。

您可以将其包装在反引号中以解决该问题。您还需要为varchar()

参考文献:9.2。架构对象名称11.1.6.1。CHAR 和 VARCHAR 类型

于 2013-01-05T18:47:12.917 回答
0

您的创建语句应该是

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

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

您可以创建 Posts 表,如

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'
于 2013-01-05T18:54:04.190 回答