Php 将自动增量值指定给另一个字段
我需要你的帮助。我有一个表,有3列(id、名称、文件名)Php 将自动增量值指定给另一个字段,php,codeigniter,Php,Codeigniter,我需要你的帮助。我有一个表,有3列(id、名称、文件名)name和filename是一个字符串。id字段是AUTO_INCREMENT,所以我不必在数组中发布它。但是问题出在filename字段上,该字段是id和name与“-”分隔符的组合字符串。 我对filename的预期结果是 +---+-------+-----------+ |id | Name | Filename | +---+-------+-----------+ | 1 | James | 1-James | | 2
name
和filename
是一个字符串。id
字段是AUTO_INCREMENT
,所以我不必在数组中发布它。但是问题出在filename
字段上,该字段是id
和name
与“-”分隔符的组合字符串。
我对filename
的预期结果是
+---+-------+-----------+
|id | Name | Filename |
+---+-------+-----------+
| 1 | James | 1-James |
| 2 | John | 2-John |
| 3 | Clark | 3-Clark |
+---+-------+-----------+
我的代码是:
$data = array(
'name' = $this->input->post('name');
'filename' =$this->input->id->post('name');
)
$this->db->insert('dbname', $data)
?>
您需要首先插入数据。然后获取最后一个插入的Id,并使用它更新记录
$data = array(
'name' => $this->input->post('name');
'filename' => $this->input->id->post('name');
)
$this->db->insert('dbname', $data);
$last_id = $this->db->insert_id();
$new_file_name = $last_id."-".$this->input->post('name');
$update_data = array(
'filename' => $new_file_name;
);
$this->db->where('id',$last_id);
$this->db->update('dbname', $update_data);
您需要首先插入数据。然后获取最后一个插入的Id,并使用它更新记录
$data = array(
'name' => $this->input->post('name');
'filename' => $this->input->id->post('name');
)
$this->db->insert('dbname', $data);
$last_id = $this->db->insert_id();
$new_file_name = $last_id."-".$this->input->post('name');
$update_data = array(
'filename' => $new_file_name;
);
$this->db->where('id',$last_id);
$this->db->update('dbname', $update_data);
您必须首先执行insert(仅使用名称),获取insert\u id($this->db->insert\u id()),然后使用文件名更新行。您不能将其存储在数据库中,并在需要时动态“生成”文件名。您可以在表上运行触发器,以设置动态文件名。我建议您不要这样做。你现在所有的数据都翻了一倍。只需创建一个类似的:
函数getFilename($user){return$user->getId().-'.$user->getName();}
我不喜欢在数据库中做这样的事情,因为你很容易忘记你在做什么。我喜欢直接在代码中看到这些东西。但这可能只是个人的事情。您必须首先执行insert(仅使用名称),获取insert\u id($this->db->insert\u id()),然后使用文件名更新行。您不能将其存储在数据库中,并在需要时动态“构建”文件名。您可以在表上运行触发器,要设置动态文件名,我建议您不要这样做。你现在所有的数据都翻了一倍。只需创建一个类似的:函数getFilename($user){return$user->getId().-'.$user->getName();}
我不喜欢在数据库中做这样的事情,因为你很容易忘记你在做什么。我喜欢直接在代码中看到这些东西。但也许这只是个人的事情。