You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:38:33