无法在mysql

时间:2015-06-09 10:21:20

标签: php mysql codeigniter

我试图在rest api web服务中一次插入多个复选框数据。但我只能插入一个数据。 这是我的控制器方法

public function insert_code_post(){

        $user_id = $this->input->post('user_id');
        $code_id = $this->input->post('code_id');

        $records = array();
        for($i=0; $i < count($code_id); $i++){
            $records[] = array('user_id' => $user_id, 'code_id' => $code_id[$i]);       
        }

                                $res = $this->my_model->insert_data($records);

                                if($res)
                                {
                                $data= array();
                                $data["error"]= false;
                                $data["status"] = 200;
                                $data["message"] = "Inserted...";
                                $this->response($data, 200);
                                }

    }

模型方法

public function insert_data($data)
        {
            foreach($data as $key => $value){
                $query = "insert into code (user_id, code_id) values ('".$value['user_id']."','".$value['code_id']."')"; 
            return  $this->db->query($query);

            }

        }

这是我的客户端代码,我使用curl和简单的html字段进行测试

<?php

if(!empty($_POST['check_list'])) {
    $baseUrl = 'http://localhost/api/my_controller/insert_code';
    $params = array();
    foreach($_POST['check_list'] as $check) {
            //echo $check; 
            $params = array(
                    "user_id" => '2',
                    "code_id" => $check);

    }
      $curl = curl_init() or die(curl_error());
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 

    curl_setopt($curl, CURLOPT_URL, $baseUrl);

    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $params);

    $jobId = curl_exec($curl);
    echo $jobId;
    curl_close($curl);          

}

?>

<html>
    <head>
        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    </head>
<body>


    <form action="insert_multiple_CI.php" method="post">
            <input type="checkbox" name="check_list[]" value="1">
            <input type="checkbox" name="check_list[]" value="2">
            <input type="checkbox" name="check_list[]" value="3">
            <input type="checkbox" name="check_list[]" value="4">
            <input type="checkbox" name="check_list[]" value="5">
            <input type="submit" />
        </form>
</body>
</html>

有人建议我如何能够向我的api插入多个数据,我尝试了很多方法,并在论坛中检查相关问题,但无法解决。

2 个答案:

答案 0 :(得分:0)

只需将模型文件更改为

即可

<强>模型

public function insert_data($data)
{
  $result=$this->db->insert_batch('code',$data);
  if ($result) {
  return $this->db->insert_id();
  } else {
  return false;
  }
}

问题在于CURL网址

 $baseUrl = 'http://localhost/api/my_controller/insert_code';

您已拨打public function insert_code_post(){此控制器,因此您的网址将为

$baseUrl = 'http://localhost/api/my_controller/insert_code_post';

答案 1 :(得分:0)

我认为准备请求有问题。

<?php

if(!empty($_POST['check_list'])) {
    $baseUrl = 'http://localhost/api/my_controller/insert_code';

    // I see you are iterating code_id in rest handler. so it should be array.
    $params = array("user_id" => '2',
                    "code_id" => array());
    foreach($_POST['check_list'] as $check) {
            //echo $check; 
            $params["code_id"][] = $check;
    }
      $curl = curl_init() or die(curl_error());
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 

    curl_setopt($curl, CURLOPT_URL, $baseUrl);

    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $params);

    $jobId = curl_exec($curl);
    echo $jobId;
    curl_close($curl);          

}

?>

您也可以按照上面代码中Saty的建议更新您的型号代码。