猿问

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

如何从我的数据库中删除逗号?


我需要根据数据删除它们。所以我有这个数据


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

}


Helenr
浏览 111回答 2
2回答

精慕HU

要删除进入数据库的无关逗号,您可以根据自己的喜好使用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, null) implode。这将适用于任何空的输入值,包括数组的中间值。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,,Dpreg_replace类似于trim,从值中删除前导和尾随逗号implode,并用单个逗号替换中间的任何 2 个或更多逗号。preg_replace(['/,{2,}/', '/^,+/', '/,+$/'], [',', '', ''], implode(',', $this->input->post('coresubjs[]')))图案说明:,{2,}任何 2 个或更多逗号^,+以1个或多个逗号开头,+$以 1 个或多个逗号结尾结果通知所有无关的逗号已被删除0,A,B,D

喵喵时光机

在你的update_core function,你需要trim额外的','。你可以这样做 -public function update_core(){&nbsp; &nbsp; &nbsp; &nbsp; $data = array(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'core_subjects' => rtrim(implode(',', $this->input->post('coresubjs[]')), ','); // remove the extra ',' to the right&nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; &nbsp; &nbsp; $this->db->where('id', $this->input->post('coresubjID'));&nbsp; &nbsp; &nbsp; &nbsp; return $this->db->update('subjects', $data);}另外,请记住,您不必在每次更新时都删除数据。更新时它会自动覆盖以前的值。所以你的remove_core方法是多余的,应该删除
随时随地看视频慕课网APP
我要回答