如何修复我的表单没有将数据更新到数据库 [Codeigniter]

Posted

技术标签:

【中文标题】如何修复我的表单没有将数据更新到数据库 [Codeigniter]【英文标题】:How to Fix My Form Didn't Update Data to Database [Codeigniter] 【发布时间】:2020-03-23 20:00:09 【问题描述】:

我的表单有问题。当我输入表格并提交时,表格没有保存到我的数据库中。 在我的表格中显示代码交易和电子邮件客户。如果客户在我的网站上购买产品。 我只是通过点击表单代码交易确认订单。

在表单代码交易显示,代码交易和电子邮件客户。我输入物流名称,没有。物流订单到客户跟踪他们的订单,以及订单包发送的选择。

但在我的问题中,表单成功保存了订单包信息“已发送”,但对于物流名称和编号。物流订单没有保存。

这是我的看法。

<div id="<?php echo $row['codetrans'] ?>" class="reveal-modal">
<h3>Detail Order</h3>
<?php echo form_open('order/edit_stats_order');
    $codetrans = array(
    'name'  => 'codetrans',
    'class' => 'column',
    'size' => '30'
    );

    $email = array(
    'name'  => 'email',
    'class' => 'column',
    'size' => '30'
    );
    $no_order = array(
    'name'  => 'no_order',
    'class' => 'column',
    'size' => '30'
    );

    $log = array(
    'FedEx' => 'FedEx', 
    'RPX' => 'RPX');

    ?>
    <span>Code :</span>
    <?php echo form_input($codetrans,$row['codetrans']) ?><br/>
    <span>Email :</span>
    <?php echo form_input($email,$row['email']) ?><br/>                                     
    <span>Logistic Name :</span><br/>           
    <?php echo form_dropdown('log', $log,$row['log']); ?><br/><br/>
    <span>No. Order :</span>
    <?php echo form_input($no_order,$row['no_order']) ?><br/>

    <?php  $options = array(
    '0' => 'Not Sendirng', 
    '1' => 'Has Sending'); ?><br/>

    <?php echo form_dropdown('stats_order', $options,$row['stats_order']); ?><br/>
    <?php echo form_hidden('input_hidden_id',$row['codetrans']);?>
    <?php echo form_submit('submit', 'Submit', 'class=searchbutton'); ?>
    <?php echo form_close();?>
    <a class="close-reveal-modal">&#215;</a>
</div>                                       
    <?php
    
    ?>
</ul>
<?php echo anchor('order/stats_order', 'Open All Stats', 'class="btn btn_aS"' ); ?>
</div>

这是我的控制器。

public function edit_stats_order() 
    $this->load->model('Order_model');
    $codetrans = $this->input->post('codetrans');
    $email = $this->input->post('email');
    $log = $this->input->post('log');
    $no_order = $this->input->post('no_order');
    $stats_order = $this->input->post('stats_order');
    if($email !='' && $codetrans !='' && $log !='' && $no_order !='')
        $this->Order_model->edit_stats_order($codetrans,$email,$log,$no_order);
        redirect('order/main');
    
    else
        echo "<script>alert('Check Again!');</script>";
        echo "<script>location.href = document.referrer</script>";
    


这是我的模型。

public function edit_stats_order($codetrans,$email,$log,$no_order)
    date_default_timezone_set('xxxxx'); 
     $data['email'] = $email;     
        $data['no_order'] = $no_order;
        $data['log'] = $log;
        $data['stats_order'] = $stats_order;
        $data['date'] = date('Y-m-d');
        $this->db->where('codetrans',$codetrans);
        $this->db->update('ordering',$data);

为什么我的代码有问题? 谢谢

【问题讨论】:

var_dump($query) 先检查它是否返回数据 你的代码容易受到SQL injection的影响 $status$stats?在模型中。 哎呀抱歉我打错了@AksenP 任何人都可以提供帮助:( 【参考方案1】:

您试图在模型中未定义的模型函数中使用$stats_order。所以你必须将$stats_order 传递给模型函数。

$stats_order 的函数调用中再添加一个参数,以便将其传递给模型。

$this->Order_model->edit_stats_order($codetrans,$email,$log,$no_order,$stats_order);

同样在模型函数中再添加一个参数。将model中函数的第一行改为,

public function edit_stats_order($codetrans,$email,$log,$no_order,$stats_order)

【讨论】:

以上是关于如何修复我的表单没有将数据更新到数据库 [Codeigniter]的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 3.1.9表格不提交数据

如何将自动完成修复到与 Codeigniter 一起出现的两个数据库中?

更新了核心数据模型,没有新版本,如何修复?

如何修复 FOSUserBundle 提交?

提交表单后,Django 没有更新我的数据库

如何在没有按钮的情况下提交表单?