【问题标题】:How to update or insert new data on codeigniter如何在 codeigniter 上更新或插入新数据
【发布时间】:2019-12-12 17:03:21
【问题描述】:

我正在我的服务器上设置一个 rest-API,我想更新一个表(即“comp_holding_stock”)。但每次我测试发布新数据时,它都会返回“未找到项目”

这是我的控制器

   public function create_comp_holding_stock(){

   $returnArr['status'] = '0';
   $returnArr['response'] = '';

   try {
       if (!$this->input->post()) {
           $returnArr['response'] = "Only POST method is allowed";
       } else {

           $holding_stock_data = array(
               'comp_id' => $this->input->post('comp_id'),
               'customer_id' => $this->input->post('customer_id'),
               'quantity' => $this->input->post('quantity'),
               'date' => date('Y-m-d H:i:s')
           );




           if (!isset($holding_stock_data)) {
            $returnArr['response'] = "Some Parameters are missing";
        } else {

            $customer = $this->Customer->save_holding_stock($holding_stock_data);

            if (!$customer) {
                $returnArr['response'] = 'No items found';
            } else {
                $returnArr['status'] = '1';
                $returnArr['response'] =  $customer;
            }
        }
    }
} catch (Exception $ex) {
    $returnArr['response'] = "Error in connection";
    $returnArr['error'] = $ex->getMessage();
}
$response = json_encode($returnArr, JSON_PRETTY_PRINT);
echo $response;

}

下面是我的模型

  public function save_holding_stock($holding_stock_data)
{
    // $this->db->trans_start();

    $success = $this->db->insert('comp_holding_stock', $holding_stock_data);

 return $success;;
}

我做错了什么?这种情况的最佳方法是什么

【问题讨论】:

  • 好久没用CI了,不过一般情况下,当你用来启动一个事务的时候你也结束它,或者commit
  • 为什么你在同一个方法上同时插入和更新?你不应该先检查存在,然后决定是使用插入还是更新,并根据插入ID或受影响的行返回真或假
  • 插入值后,您应该将值返回为“return 1;”或插入行的 id "return $this->db->insert_id()"
  • @AshishSinghal 我返回成功,但我得到了相同的响应

标签: php api codeigniter


【解决方案1】:

我建议您尝试检查您的控制器中是否有负载模型。 并在您的模型中尝试这样做。

public function save_holding_stock($holding_stock_data, $comp_id=FALSE)
{

    if(!$comp_id == -1 || !$this->exists($comp_id))
    {
        if($this->db->insert('comp_holding_stock', $holding_stock_data))
        {
            $holding_stock_data['comp_id'] = $this->db->insert_id();

            return TRUE;
        }

        return FALSE;
    }

    $this->db->where('comp_id', $comp_id);

    return $this->db->update('comp_holding_stock', $holding_stock_data);
}

【讨论】:

    【解决方案2】:

    在您的代码中尝试这些更改

    在您的控制器中,

    $customer      =   $this->Customer->save_holding_stock($holding_stock_data);
    $save_status    =   $this->db->affected_rows();
    if ($save_status>0) {
                    $returnArr['status'] = '1';
                    $returnArr['response'] =  $customer;
    
                } else {
                    $returnArr['response'] = 'No items found';
                }
    

    在您的模型中,

    public function save_holding_stock($holding_stock_data)
    {
        // $this->db->trans_start();
    
         $this->db->insert('comp_holding_stock', $holding_stock_data);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      相关资源
      最近更新 更多