mysql数据库中的动态表名?

时间:2014-05-12 16:32:56

标签: php mysql

我正在使用以下代码在mysql数据库中创建动态表,该代码工作正常。

但是,我想根据动态表名创建第二个表!

例如:

dynamic table name是:David second table based on David table应为:David.booksDavid-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)
)"
);

有人可以帮帮我吗?

由于

5 个答案:

答案 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)....希望有所帮助