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)值并将其存储为表格中的单独列。
$checkedfileds
$checkedfileds(Array)
如果我将其中包含$checkedfileds的$this->db->query("ALTER TABLE pm1asset_dynamic_fields ADD ".$checkedfileds." varchar(255) NOT NULL");内容作为数组创建为表中的列名,那么假设我将其中包含$dynclmns的$this->db->query("ALTER TABLE pm1asset_dynamic_fields ADD ".$dynclmns." varchar(255) NOT NULL");内容创建为add_to_title但未创建下一个列,则我不知道为什么不创建它。谁能帮帮我吗..
$this->db->query("ALTER TABLE pm1asset_dynamic_fields ADD ".$checkedfileds." varchar(255) NOT NULL");
$dynclmns
$this->db->query("ALTER TABLE pm1asset_dynamic_fields ADD ".$dynclmns." varchar(255) NOT NULL");
尝试修复您的sql查询语法,并修改您的代码,如下所示:
$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;