Php mysql数据库中的动态表名?
我使用下面的代码在mysql数据库中创建动态表,这些代码运行良好 但是,我还想基于动态表名创建第二个表 例如:Php mysql数据库中的动态表名?,php,mysql,Php,Mysql,我使用下面的代码在mysql数据库中创建动态表,这些代码运行良好 但是,我还想基于动态表名创建第二个表 例如: 动态表名是:David 基于David表的第二个表应为:David.books或David books 这是我当前的代码: $stmt = mysqli_prepare( $db_conx, "CREATE TABLE $user ( id int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) )" ); $stmt = mys
动态表名是:David
基于David表的第二个表应为: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)
)"
);
我尝试了这个,但没有创建表:
$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)
)"
);
我也这样尝试过,但没有创建任何表:
$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)
)"
);
有人能帮我吗
谢谢您不应该在表名周围单独引用:
$stmt = mysqli_prepare( $db_conx, "CREATE TABLE " .$user. "_books (
id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)"
);
也
此外,根据@Fred ii-,。您不应该在表名周围单引号:
$stmt = mysqli_prepare( $db_conx, "CREATE TABLE " .$user. "_books (
id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)"
);
也
另外,根据@Fred ii-,.$stmt=mysqli\u prepare($db\u conx,“创建表”.$user.-books(
id int(11)非空自动增量,
主键(id)
)"
); $stmt=mysqli\u prepare($db\u conx,“创建表”。$user.-books(
id int(11)非空自动增量,
主键(id)
)"
); mySQL表名中不能有点,标识符不带引号
Database and table names cannot contain '/', '\', '.', or characters
that are not permitted in file names.
参考:
此外,您对表的使用似乎是非正统的,您应该使用关系数据库提供的可能性
例如:mySQL表名中不能有点,标识符不带引号
Database and table names cannot contain '/', '\', '.', or characters
that are not permitted in file names.
参考:
此外,您对表的使用似乎是非正统的,您应该使用关系数据库提供的可能性
例如:将字符串组合在一起的正确方法是使用。与您一样,但您没有在字符串本身中定义所需的点:
$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不允许像您那样将字符串组合在一起正确的组合字符串的方法是使用。与您一样,但您没有在字符串本身中定义所需的点:
$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不允许您像以前那样将字符串组合在一起您不能按原样编写$user。您必须这样做:“创建表”.$user..books”(id在(11)中)…希望它有帮助您不能按原样编写$user。您必须这样做:“创建表”.$user..books”(id在(11)中)…希望它对您有所帮助。无论是David.books
还是David books
都是一个很好的标识符名称,因为。为什么不David\u books
呢?将表名放在“任何错误或消息”之间?像这样动态创建的表名通常是设计不好的标志。为什么不创建一个books表,然后创建一个ownername
将“David”“来自太多联接”放在其中的字段表?那么你创建了更多的表吗?无论是David.books
还是David books
都不是一个好的标识符名称,因为。为什么不改为David\u books
呢?将表名放在“任何错误或消息”之间?像这样动态创建的表名通常是设计不好的标志。为什么不是一个books表,然后是一个 ownername
字段,您将“David”“来自太多联接”表?那么你创建了更多的表?你现在可以,但我不建议使用点。你现在可以,但我不建议使用点。好奇:为什么在-books
中使用连字符?连字符不应该在SQL中使用,因为它可能被误解为负号,除非勾选。@Fred ii-ah,这是提问者的替代选项。@Fred ii-ah哦,一个点,我甚至没有想到。修正了。似乎OP有很多答案可以从lolI使用的\u书籍中选择,而且效果很好,所以接受了这个答案。它得到了回报,嗯?@DigitalChris;-)+1Curious:为什么在-books
中使用连字符?在SQL中不应该使用连字符,因为它可能会被误解为负号,除非打勾。@Fred ii-啊,这是提问者对点的替代,我甚至没有想到。修复了。似乎OP有很多答案可供选择,可以从lolI使用的\U书籍中选择,并且很好,所以接受了这个答案。它得到了回报,嗯?@DigitalChris;-)+1