如何使用codeigniter动态创建数组中的值并将其作为单独的列爆炸 [英] How to explode the values in the array and it as a separate columns by creating it dynamically using codeigniter

查看:77
本文介绍了如何使用codeigniter动态创建数组中的值并将其作为单独的列爆炸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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");
    }
}

上面的代码是控制器代码。这里的 $ checkedfileds 是数组形式的多个复选框值。在这里,我想爆炸 $ checkedfileds(Array)值,并将其存储为表中的单独列。

Here above code is a controller code. Here $checkedfileds is a multiple check box values in the array form. Here i want to explode the $checkedfileds(Array) values and store it as a separate columns in a table.

如果我在 $ this-> db->查询中包含 $ checkedfileds ( ALTER TABLE pm1asset_dynamic_fields ADD。$ checkedfileds。 varchar(255)NOT NULL); 它被创建为一个数组,作为表中的列名,如果我包括<$ c $ $ this-> db-> query( ALTER TABLE pm1asset_dynamic_fields ADD。$ dynclmns。 varchar(255)NOT NULL)中的c> $ dynclmns / code>它创建为add_to_title,但未创建下一列,我不知道为什么不创建它。谁能帮助我。.

If i include $checkedfileds in $this->db->query("ALTER TABLE pm1asset_dynamic_fields ADD ".$checkedfileds." varchar(255) NOT NULL"); it is created as a Array as a column name in a table, suppose if i include $dynclmns in $this->db->query("ALTER TABLE pm1asset_dynamic_fields ADD ".$dynclmns." varchar(255) NOT NULL"); it created as a add_to_title but next column is not created, i don't know why it's not going to create. can any one please help me..

推荐答案

尝试修复您的SQL查询语法并修改您的代码,如下所示:

Try to repair your sql query syntax and modify your codes like this :

$checkedfileds = $_POST['CheckedFileds'];
$qry = "ALTER TABLE `pm1asset_dynamic_fields` ";
foreach ($checkedfileds as $key => $value) {
    $dynflds = strtolower($value);
    $dynclmns = 'add_to' . '_' . $dynflds;
    if ($value == 'Title') {
        $qry .= "ADD COLUMN `" . $dynclmns . "` int(11) NOT NULL";
    } else {
        $qry .= "ADD COLUMN `" . $dynclmns . "` varchar(255) NOT NULL";
    }
    end($checkedfileds);
    // use (;) for the last row, otherwise use (,)
    if ($key === key($checkedfileds)) {
        $qry .= ";";
    } else {
        $qry .= ", ";
    }
}
$this->db->query($qry);

这将生成如下查询:

ALTER TABLE `pm1asset_dynamic_fields` 
ADD COLUMN `add_to_title` int(11) NOT NULL,
ADD COLUMN `add_to_col2` varchar(255) NOT NULL,
ADD COLUMN `add_to_col3` varchar(255) NOT NULL;

这篇关于如何使用codeigniter动态创建数组中的值并将其作为单独的列爆炸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆