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

Laravel+Angular项目中手机号+号无法存入MySQL数据库问题

问题解决:手机号带+号无法存入数据库

问题根源

  1. 前端输入类型错误:使用type="number"的输入框会自动过滤非数字字符(包括+号),导致用户输入的+号根本无法提交到后端
  2. 前端验证缺失:没有强制要求手机号必须包含+号的验证规则
  3. 后端验证不严谨:手机号字段未明确指定string类型约束,可能引发类型转换问题

前端修改方案

  1. 将输入框类型从number改为text,允许输入+号:
<div class="form-group">
   <label for="mobilenumber"><i class="zmdi zmdi-phone p-3"></i></label>
   <input type="text" formControlName="phone_number" class="form-control" name="phone" id="mobilenumber" placeholder="Phone number (e.g. +123456789)" required="" control-id="ControlID-4">
</div>
  1. 添加带+号的手机号格式验证规则:
phone_number: new FormControl(null, [
  Validators.required,
  Validators.pattern(/^\+\d+$/) // 确保以+开头,后续为数字
]),

后端修改方案

完善Laravel的验证规则,明确string类型并添加格式校验:

public function CustomerRegister()
{
    $inputs = $this->request->all();

    $v = Validator::make($inputs, [
        'email' => 'required|string|max:50',
        'password' => 'required|confirmed',
        'password_confirmation' => 'required',
        'first_name' => 'nullable|string|max:100',
        'last_name' => 'nullable|string|max:100',
        'phone_number' => 'nullable|string|max:15|regex:/^\+\d+$/', // 新增string约束和正则验证
        'postcode' => 'nullable|string|max:15',
        'abn' => 'nullable|string|max:15',
        'state' => 'nullable|string|max:15',
    ]);

    // 后续验证及存储逻辑...
}

数据库说明

你的数据库字段类型varchar(50)和排序规则utf8_general_ci完全符合要求,只要前端能正确提交带+号的字符串,后端验证通过后即可正常存入数据库。

内容的提问来源于stack exchange,提问作者Ali akbar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:39:16