我试图在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插入多个数据,我尝试了很多方法,并在论坛中检查相关问题,但无法解决。
答案 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的建议更新您的型号代码。