【问题标题】:How to create a dynamic columns in a table using array values in codeigniter如何使用 codeigniter 中的数组值在表中创建动态列
【发布时间】:2020-04-03 09:51:56
【问题描述】:

public function addDynFields()
{
    $checkedfileds=$_POST['CheckedFileds'];
    $fields=implode(',',$checkedfileds);
    $dynflds = strtolower($fields);
    $dynclmns = 'add_to'.'_'.$dynflds;
    if($fields == 'Title')
    {
        $this->db->query("ALTER TABLE `pm1asset_dynamic_fields` ADD ".$dynclmns." int(11) NOT NULL");
    }
    else
    {
        $this->db->query("ALTER TABLE `pm1asset_dynamic_fields` ADD ".$dynclmns." varchar(255) NOT NULL");
    }
}

如何使用 codeigniter 中的数组值在表中创建动态列。使用 First 数组值,我们需要首先创建,使用 second 我们需要在表中创建第二个动态列,依此类推。如何做到这一点任何人都可以帮助我。任何帮助都将不胜感激。

【问题讨论】:

标签: javascript php sql codeigniter


【解决方案1】:

我不建议这样做,因为您还需要提供type, length, default value, null 等。所以,这将是一项繁重的任务。此外,您必须检查表是否已经存在,然后使用 Alter table 查询。

如果您还必须从用户那里获取 type, length

可能的解决方案


在你的函数中检查表是否存在,

$query = "SELECT 1 from `Your_Table` LIMIT 1";
//returns false if the table does not exist.
$tableExists = $this->db->query($query);

如果没有--
使用 CREATE TABLE 查询-- //if($tableExists === FALSE)

CREATE TABLE Your_Table(
Column_1 Column_1_Attributes,
Column_2 Column_2_Attributes,
.
. 
)

例如:

$query = "CREATE TABLE MyGuests (
          id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
          firstname VARCHAR(30) NOT NULL,
          email VARCHAR(50)
        )";

如果是--

使用 ALTER TABLE 查询--

ALTER TABLE Your_Table
MODIFY COLUMN new_column new_column_attributes;

例如:

$query = "ALTER TABLE MyGuests
          ADD lastname VARCHAR(30) NOT NULL";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2019-01-29
    • 2020-07-15
    • 2019-11-07
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多