如何使用CodeIgniter REST API将单选按钮输出保存到数据库
解决CodeIgniter REST框架中单选按钮语言值映射存储问题
我来帮你搞定这个问题!从你给出的代码片段来看,核心问题是没有把前端单选按钮的选项映射成数据库需要的数字(英文→1,法文→2),同时代码里还有拼写小错误,另外可以优化请求处理和错误反馈逻辑。下面是修正后的完整方案:
修正后的API代码
function update_language() { // 获取前端POST的JSON数据 $data = json_decode(file_get_contents('php://input'), true); // 第一步:校验必填参数是否存在 if (!isset($data['language'])) { $response = [ 'status' => 'error', 'message' => '请选择语言选项' ]; $this->response($response, 400); // 返回400非法请求状态码 } // 第二步:定义语言与数字的映射规则 $language_map = [ 'english' => 1, // 对应前端英文单选按钮的value值 'french' => 2 // 对应前端法文单选按钮的value值 ]; // 校验传入的语言值是否合法 if (!array_key_exists($data['language'], $language_map)) { $response = [ 'status' => 'error', 'message' => '无效的语言选项' ]; $this->response($response, 400); } // 第三步:准备插入数据库的数据 $insert_data = [ 'language' => $language_map[$data['language']] ]; // 执行数据库插入操作 $result = $this->db->insert('language', $insert_data); // 第四步:返回响应结果 if ($result) { $response = [ 'status' => 'success', 'message' => '语言设置已成功保存' ]; $this->response($response, 200); } else { $response = [ 'status' => 'error', 'message' => '保存语言设置失败,请稍后重试' ]; $this->response($response, 500); // 返回500服务器错误状态码 } }
关键细节说明
- 语言映射逻辑:用数组
$language_map把前端单选按钮的文本/标识和数据库需要的数字绑定,你可以根据前端实际传递的value值调整数组的键(比如前端单选按钮value是en/fr,就改成'en' => 1, 'fr' => 2)。 - 参数校验:增加了必填项和合法值检查,避免前端传空值或非法值导致数据库报错,同时给前端明确的错误提示。
- REST规范适配:用CodeIgniter REST框架自带的
$this->response()方法代替原生header(),自动处理JSON响应格式和HTTP状态码,更符合REST接口的标准。 - 拼写错误修复:修正了你代码里的
$resul(少了t)问题,确保判断逻辑正常执行。
前端单选按钮示例参考
为了配合后端接口,前端的单选按钮应该设置对应的value值,比如:
<div> <input type="radio" name="language" value="english" id="lang-en"> <label for="lang-en">English</label> </div> <div> <input type="radio" name="language" value="french" id="lang-fr"> <label for="lang-fr">Français</label> </div>
前端提交时,需要把选中的value以JSON格式发送到接口(比如用fetch/axios)。
内容的提问来源于stack exchange,提问作者gamer
相关产品推荐
相关产品推荐

