我正在使用以下代码在mysql数据库中创建动态表,该代码工作正常。
但是,我想根据动态表名创建第二个表!
例如:
dynamic table name
是:David
second table based on David table
应为:David.books
或David-books
这是我目前的代码:
$stmt = mysqli_prepare( $db_conx, "CREATE TABLE $user (
id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)"
);
我试过这个并没有创建表格:
$stmt = mysqli_prepare( $db_conx, "CREATE TABLE $user.'books' (
id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)"
);
我也尝试过这样做,并没有创建任何表格:
$stmt = mysqli_prepare( $db_conx, "CREATE TABLE $user.books (
id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)"
);
有人可以帮帮我吗?
由于
答案 0 :(得分:2)
你不应该在你的牌名周围单引号:
$stmt = mysqli_prepare( $db_conx, "CREATE TABLE " .$user. "_books (
id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)"
);
另外,don't use a dot in a table name.。
另外,根据@ Fred-ii-,don't use a dash in your table names。
答案 1 :(得分:2)
mySQL表名中不能包含带有不带引号标识符的点。
Database and table names cannot contain '/', '\', '.', or characters
that are not permitted in file names.
参考:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
此外,您对表的使用似乎是非正统的,您应该使用RELATIONAL数据库提供的可能性。
例如:Database schema for Books, Authors, Publishers and Users with bookshelves
答案 2 :(得分:0)
$ stmt = mysqli_prepare($ db_conx,“CREATE TABLE”。$ user。“ - books( id int(11)NOT NULL AUTO_INCREMENT, PRIMARY KEY(id) )” );
答案 3 :(得分:0)
将字符串放在一起的正确方法是使用a。就像你一样,但你没有在字符串本身中定义你想要的点:
$string = $user . ".books"; // This will return "David.books"
$string = $user . "-books"; // And this will return "David-books"
你看我是如何添加一个额外的点?
也许你甚至可以做$string = $user.".books";
之类的事情然后做
$stmt = mysqli_prepare($db_conx, "CREATE TABLE $string");
因为我不认为MySQL允许你像你一样把字符串放在一起
答案 4 :(得分:0)
你不能按原样写$ user。你必须这样做:“CREATE TABLE'”。$ user。“。books'(id in(11)....希望有所帮助