Php 有没有办法删除数据库中的逗号?代码点火器
如何从数据库中删除逗号 我需要根据数据删除它们。 所以我有这些数据Php 有没有办法删除数据库中的逗号?代码点火器,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,如何从数据库中删除逗号 我需要根据数据删除它们。 所以我有这些数据 产品1,产品2,,,,,-我需要删除每个逗号 所以,我需要删除每个逗号。这是我的看法 <?php echo form_open('subjects/remove_core'); ?> <?php $core_subjs = explode(',', $subjects['core_subjects']); ?> <?php foreach($core_subjs as $key =&g
产品1,产品2,,,,,
-我需要删除每个逗号
所以,我需要删除每个逗号。这是我的看法
<?php echo form_open('subjects/remove_core'); ?>
<?php $core_subjs = explode(',', $subjects['core_subjects']); ?>
<?php foreach($core_subjs as $key => $subject): ?>
<input type="hidden" name="remove_core" class="form-control" value="<?php echo $subjects['core_subjects'].'' ?>" /><br>
<input type="text" name="coresubjs[]" class="form-control" value="<?php echo $subject ?>" /><br>
<button type="submit" class="btn btn-success btn-sm">Save</button>
<?php endforeach ?>
</form>
我的模型-所以在这里我不确定我是否做得对,因为结果是不正确的
public function remove_core(){
$data = array(
'core_subjects' => " "
);
$this->db->where('id', $this->input->post('coresubjID'));
return $this->db->update('subjects', $data);
}
我如何内爆数据
public function update_core(){
$data = array(
'core_subjects' => implode(',',$this->input->post('coresubjs[]'))
);
$this->db->where('id', $this->input->post('coresubjID'));
return $this->db->update('subjects', $data);
}
在
update_核心功能中
,您需要trim
附加的,'
。您可以按以下方式执行此操作-
public function update_core(){
$data = array(
'core_subjects' => rtrim(implode(',', $this->input->post('coresubjs[]')), ','); // remove the extra ',' to the right
);
$this->db->where('id', $this->input->post('coresubjID'));
return $this->db->update('subjects', $data);
}
另外,请记住,您不必在每次更新时删除数据。更新时,它将自动覆盖以前的值。因此,您的
remove_core
方法是多余的,应该删除要删除进入数据库的多余逗号,您可以根据您的偏好使用array_filter
、trim
或preg_replace
理论值为$this->input->post('coresubs[])
of
数组(
'',
'',
'0',
“A”,
“B”,
'',
“D”,
'',
'',
);
仅使用内爆(',')
将导致
,,0,A,B,,D,,
免责声明
但是请记住,post值中的任何逗号都不会被正确解释,应该使用其他方法进行转义。例如:1000
将分解为数组(“1”、“000”)
。因此,我建议使用json_encode()
和json_decode()
或serialize()
和unserialize()
,而不是内爆(',')
和分解(',')
例如:
从
内爆
数组参数中删除“空”值(0,”、false、null
)。
这将对任何空的输入值起作用,包括数组的中间部分
内爆(“,”,数组_过滤器($this->input->post('coresubs[]))
结果请注意,删除了所有无关的逗号和
0
值
要避免使用诸如0、false等“空”值的问题,可以使用自定义回调
内爆(',',数组过滤器($this->input->post('coresubs[]),函数($value){
返回null!=$value&&''!==$value;
}))
结果
请注意,已删除所有无关的逗号
仅从内爆
值中删除前导和尾随逗号
trim(内爆(“,”,$this->input->post('coresubs[]),“,”)
结果
注意前导和尾逗号被删除,但中间逗留的逗号仍然存在。
类似于<代码>修饰符< /> >,从“代码”中删除引导和尾随逗号:“MyDoo< <代码>值”,在中间用一个逗号替换任何2个逗号或更多逗号。
preg_replace(['/,{2,}/','/^,+/','/,+$/'],[','','','],内爆(',',',$this->input->post('coresubs[]'))
模式说明:
,{2,}
任意两个或多个逗号
^,+
以一个或多个逗号开头
,+$
以一个或多个逗号结尾
结果
请注意,所有无关的逗号都已删除
你在内爆什么?您是否正在内爆并插入数据库?内爆数据的来源是什么?@Hardood-在我的数据库中,数据是内爆的。我需要的是从数据库中删除逗号。我要的是query@Harood-检查我的升级问题,请忽略内爆部分内爆数据的来源是什么?我想帮助防止在php使用rtrim($subjects['core_subjects'],',')中再次在数据库中插入这样的数据
或mysql使用TRIM(training),”FROM core_subject)作为core_subject
,这将删除所有无关的尾随逗号。您好,我已经尝试了您的代码,但数据和逗号仍然没有被删除。谢谢你的回复,先生,你能打印($data['core\u subjects')
并共享输出吗?我试过这个--rtrim(内爆(''.$this->input->post('coressubjects[]),',')代码>但问题是所有逗号都已删除是否有可能在每个文本框中删除1个逗号?非常感谢您,您的代码工作正常,但问题是当我单击submit按钮时,所有逗号都被删除了
,,0,A,B,,D,,
A,B,D
0,A,B,D
0,A,B,,D
0,A,B,D