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

如何在PHP中拆分MySQL单字段存储的姓名,分别输出名与姓

从MySQL全名字段提取名/姓的解决方案

嘿,我来帮你搞定这个问题!从存储“名+姓”的字段里单独提取名或者姓,用MySQL自带的字符串函数就能轻松实现,结合你的PHP代码修改也很简单,咱们一步步来:

核心方法:使用SUBSTRING_INDEX函数

MySQL的SUBSTRING_INDEX函数可以根据指定的分隔符(这里是空格)截取字符串的某一部分,完美适配你的需求:

1. 提取名(第一个空格前的内容)

假设存储全名的字段是full_name(如果你的字段名是其他的,比如username,直接替换即可),SQL语句如下:

SELECT SUBSTRING_INDEX(full_name, ' ', 1) AS first_name FROM `users` WHERE `username` = '$username' LIMIT 1
  • ' '是分隔符(空格),1表示取分隔符第一次出现前的内容,也就是名。

2. 提取姓(最后一个空格后的内容)

如果要提取姓,只需要把第三个参数改成-1,表示取分隔符最后一次出现后的内容:

SELECT SUBSTRING_INDEX(full_name, ' ', -1) AS last_name FROM `users` WHERE `username` = '$username' LIMIT 1

3. 同时提取名和姓

如果需要一次获取名和姓,可以把两个查询合并:

SELECT 
  SUBSTRING_INDEX(full_name, ' ', 1) AS first_name,
  SUBSTRING_INDEX(full_name, ' ', -1) AS last_name
FROM `users` WHERE `username` = '$username' LIMIT 1

结合你的PHP代码修改

把原有的SELECT *替换成上面的SQL语句即可,比如提取名的完整代码示例:

$username = mysqli_real_escape_string($datacenter, $_POST['username']);
// 替换成提取名的查询
$check = mysqli_query($datacenter, "SELECT SUBSTRING_INDEX(full_name, ' ', 1) AS first_name FROM `users` WHERE `username` = '$username' LIMIT 1");

if(mysqli_num_rows($check) > 0){
    $display = mysqli_fetch_assoc($check);
    // 输出名
    echo "用户的名:" . $display['first_name'];
}

额外建议:使用预处理语句提升安全性

虽然你用了mysqli_real_escape_string来防止SQL注入,但预处理语句是更安全的方式,推荐改成这样:

// 准备提取姓的预处理语句
$stmt = mysqli_prepare($datacenter, "SELECT SUBSTRING_INDEX(full_name, ' ', -1) AS last_name FROM `users` WHERE `username` = ? LIMIT 1");
// 绑定参数("s"表示字符串类型)
mysqli_stmt_bind_param($stmt, "s", $_POST['username']);
// 执行查询
mysqli_stmt_execute($stmt);
// 获取结果
$result = mysqli_stmt_get_result($stmt);

if(mysqli_num_rows($result) > 0){
    $display = mysqli_fetch_assoc($result);
    echo "用户的姓:" . $display['last_name'];
}

注意:如果你的全名字段里可能存在中间名(比如John Michael Smith),SUBSTRING_INDEX(full_name, ' ', -1)依然能正确提取最后一个空格后的姓,完全适用这种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:29:19