为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法在我的数据库中删除逗号?代码点火器 PHP

有没有办法在我的数据库中删除逗号?代码点火器 PHP

PHP
Helenr 2023-04-23 17:41:56
如何从我的数据库中删除逗号?我需要根据数据删除它们。所以我有这个数据Product 1,Product 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(){    $this->subject_model->remove_core();    redirect('subjects/edit/'.$_SESSION['editID']);}我的模型 - 所以在这里我不确定我是否做对了,因为结果不正确。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);}
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

要删除进入数据库的无关逗号,您可以根据自己的喜好使用array_filter, trim, 或。preg_replace


$this->input->post('coresubjs[]')理论值为


array(

   '',

   '',

   '0',

   'A',

   'B',

   '',

   'D',

   '',

   '',

);

仅使用implode(',')会导致

,,0,A,B,,D,,

免责声明

但是请记住,post 值中的任何逗号都不会被正确解释,应该使用其他方式进行转义。例如:1,000将被分解为array("1", "000"). 出于这个原因,我建议重构以支持使用json_encode()andjson_decode()serialize()and unserialize(),而不是implode(',')andexplode(',')


数组过滤器

从数组参数中删除“空”值 ( 0, "", false, nullimplode。这将适用于任何空的输入值,包括数组的中间值。

implode(',', array_filter($this->input->post('coresubjs[]')))

结果
请注意,所有无关的逗号和0值都已删除

A,B,D

要避免诸如 之类的“空”值的问题0, false,您可以改用自定义回调。

implode(',', array_filter($this->input->post('coresubjs[]'), function($value) {    return null !== $value && '' !== $value;
}))

结果
通知所有无关的逗号都被删除

0,A,B,D

修剪

仅从值中删除前导和尾随逗号implode

trim(implode(',', $this->input->post('coresubjs[]')), ',')

结果
请注意,前导逗号和尾随逗号已被删除,但中间的额外逗号保留了下来。

0,A,B,,D

preg_replace

类似于trim,从值中删除前导和尾随逗号implode,并用单个逗号替换中间的任何 2 个或更多逗号。

preg_replace(['/,{2,}/', '/^,+/', '/,+$/'], [',', '', ''], implode(',', $this->input->post('coresubjs[]')))

图案说明:

  • ,{2,}任何 2 个或更多逗号

  • ^,+以1个或多个逗号开头

  • ,+$以 1 个或多个逗号结尾

结果
通知所有无关的逗号已被删除

0,A,B,D


查看完整回答
反对 回复 2023-04-23
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

在你的update_core function,你需要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方法是多余的,应该删除


查看完整回答
反对 回复 2023-04-23
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信