如何使用动态列数MYSQL创建表

时间:2015-04-10 07:04:37

标签: php mysql sql

我试图在mysql中创建表。 $column_str存储了列的名称

如果我们有3列,它将是$columns_str="123",4列 - > $columns_str="1234"

所以,我需要使用变量$ columns_str创建表。

此代码创建包含1列的table1:" 123":

$columns_str="123"; $table_name = table1;
$connection->query("CREATE TABLE `kcup`.`$table_name` ( `$columns_str` TEXT NOT NULL ) ENGINE = InnoDB;")

我需要有3列的表格:" 1"," 2"," 3"。

帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

要创建一个包含三个名为123的列的表,当您有一个变量$columns_str="123"时,可以使用这样的内容;

<?php
$columns_str="123";
$table_name = 'table1';
$cols = str_split($columns_str);
$colQuery = '`id` int(11) NOT NULL AUTO_INCREMENT,';
foreach($cols as $col)
{
    $colQuery .= "
        `$col` TEXT NOT NULL,";
}
$colQuery .= "
PRIMARY KEY (`id`)";
$connection->query("CREATE TABLE `kcup`.`$table_name` ( $colQuery ) ENGINE = InnoDB;")

这将运行以下SQL命令;

CREATE TABLE `kcup`.`table1` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `1` TEXT NOT NULL,
    `2` TEXT NOT NULL,
    `3` TEXT NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE = InnoDB;

答案 1 :(得分:1)

您无法创建包含动态列的表格,但您可以使用此类表格进行模拟

ID   FIELD    VALUE
1    ID       4345
1    NAME     PAUL
1    SURNAME  SMITH
2    ID       4346
2    NAME     MARC
2    SURNAME  BROWN

该表的PK是ID,FIELD 添加一个新字段相当于添加一个新行。

因此添加字段EMAIL相当于添加两行(一行用于PAUL,一行用于MARC),您将拥有以下记录

ID   FIELD    VALUE
1    ID       4345
1    NAME     PAUL
1    SURNAME  SMITH
2    ID       4346
2    NAME     MARC
2    SURNAME  BROWN
1    EMAIL    paul.smith@email.com
2    EMAIL    marc.brown@email.com