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

PHP+AJAX提交项目表单时如何校验name字段重复并返回错误提示

完整实现方案

1. 后端PHP代码修改(save_project函数新增重复校验)

修改后的完整函数代码如下:

function save_project(){
    extract($_POST);
    $data = "";
    foreach($_POST as $k => $v){
        if(!in_array($k, array('id','user_ids')) && !is_numeric($k)){
            if($k == 'description')
                $v = htmlentities(str_replace("'","’",$v));
            if(empty($data)){
                $data .= " $k='$v' ";
            }else{
                $data .= ", $k='$v' ";
            }
        }
    }
    if(isset($user_ids)){
        $data .= ", user_ids='".implode(',',$user_ids)."' ";
    }

    // 新增name字段重复校验逻辑
    $check_sql = "SELECT id FROM project_list WHERE name = '{$name}' ";
    // 编辑场景下排除当前项目自身,避免误判重复
    if(!empty($id)){
        $check_sql .= " AND id != {$id} ";
    }
    $check_result = $this->db->query($check_sql);
    if($check_result->num_rows > 0){
        // 存在同名项目,返回2作为重复标识
        return 2;
    }

    if(empty($id)){
        $save = $this->db->query("INSERT INTO project_list set $data");
    }else{
        $save = $this->db->query("UPDATE project_list set $data where id = $id");
    }
    if($save){
        return 1;
    }
    // 保存失败返回0
    return 0;
}

额外优化建议:给数据库project_list表的name字段添加唯一索引,从数据库层面兜底避免并发提交导致的重复数据问题。

2. 前端AJAX代码修改(新增重复错误提示处理)

修改后的表单提交代码如下:

$('#manage-project').submit(function(e){
    e.preventDefault()
    start_load()
    $.ajax({
        url:'ajax.php?action=save_project',
        data: new FormData($(this)[0]),
        cache: false,
        contentType: false,
        processData: false,
        method: 'POST',
        type: 'POST',
        success:function(resp){
            if(resp == 1){
                alert_toast('数据保存成功',"success");
                setTimeout(function(){
                    location.href = 'index.php?page=project_list'
                },2000)
            }else if(resp == 2){
                // 处理名称重复的错误提示
                alert_toast('项目名称已存在,请更换后重试',"error");
                end_load(); // 结束加载动画
            }else{
                // 处理其他保存失败的情况
                alert_toast('保存失败,请稍后重试',"error");
                end_load();
            }
        }
    })
})

内容的提问来源于stack exchange,提问作者Yohannes Debelu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 19:06:03