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

如何实现搜索医生后编辑文本框并同步更新MySQL数据库

医生信息编辑&保存功能实现方案

我直接给你一套可落地的改造方案,分前端交互和后端数据库更新两部分来做:

一、改造结果页的前端代码

先把你的现有页面调整下,添加编辑/保存按钮,并用JS处理文本框的禁用/启用状态:

<?php if ($row = mysqli_fetch_array($r_query)){ ?>
  <div class="doctor-profile">
    <!-- 显示医生信息的禁用文本框 -->
    <div class="form-group">
      <label>医生姓名:</label>
      <input type="text" name="doc_name" value="<?php echo htmlspecialchars($row['doctor_name']); ?>" disabled class="doc-field">
    </div>
    <div class="form-group">
      <label>所属科室:</label>
      <input type="text" name="doc_dept" value="<?php echo htmlspecialchars($row['department']); ?>" disabled class="doc-field">
    </div>
    <!-- 其他需要编辑的字段同理添加 -->
    
    <!-- 隐藏的医生ID,用来定位要修改的数据库记录 -->
    <input type="hidden" id="doc-id" value="<?php echo $row['id']; ?>">
    
    <!-- 操作按钮 -->
    <button id="edit-btn" class="btn">编辑信息</button>
    <button id="save-btn" class="btn" style="display: none;">保存修改</button>
  </div>
<?php } ?>

<!-- 添加JS交互 -->
<script>
// 获取页面元素
const editBtn = document.getElementById('edit-btn');
const saveBtn = document.getElementById('save-btn');
const docId = document.getElementById('doc-id');
const docFields = document.querySelectorAll('.doc-field');

// 编辑按钮点击事件:启用文本框,切换按钮显示
editBtn.addEventListener('click', () => {
  docFields.forEach(field => {
    field.disabled = false;
    field.style.outline = '1px solid #409eff'; // 加个边框提示可编辑
  });
  editBtn.style.display = 'none';
  saveBtn.style.display = 'inline-block';
});

// 保存按钮点击事件:提交修改到后端
saveBtn.addEventListener('click', () => {
  // 收集修改后的数据
  const formData = new FormData();
  formData.append('doctor_id', docId.value);
  formData.append('doctor_name', document.querySelector('input[name="doc_name"]').value);
  formData.append('department', document.querySelector('input[name="doc_dept"]').value);
  // 其他字段依次添加

  // 用AJAX提交,避免页面刷新
  fetch('save_doctor.php', {
    method: 'POST',
    body: formData
  })
  .then(res => res.text())
  .then(result => {
    if (result === 'success') {
      alert('修改已成功保存!');
      // 恢复文本框禁用状态,切换按钮
      docFields.forEach(field => {
        field.disabled = true;
        field.style.outline = '';
      });
      editBtn.style.display = 'inline-block';
      saveBtn.style.display = 'none';
    } else {
      alert(`保存失败:${result}`);
    }
  })
  .catch(err => {
    console.error('请求出错:', err);
    alert('网络异常,保存失败!');
  });
});
</script>

二、编写后端保存接口(save_doctor.php)

这个文件负责接收前端提交的修改数据,更新到MySQL数据库:

<?php
// 替换成你的数据库连接信息
$db_host = 'localhost';
$db_user = '你的数据库用户名';
$db_pass = '你的数据库密码';
$db_name = '你的数据库名称';

// 连接数据库
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
  die('数据库连接失败:' . mysqli_connect_error());
}

// 只处理POST请求
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  echo '非法请求';
  exit;
}

// 获取并转义数据,防止SQL注入
$doctor_id = mysqli_real_escape_string($conn, $_POST['doctor_id']);
$doctor_name = mysqli_real_escape_string($conn, $_POST['doctor_name']);
$department = mysqli_real_escape_string($conn, $_POST['department']);
// 其他字段同理处理

// 执行更新SQL
$sql = "UPDATE 你的医生表名 SET doctor_name = '$doctor_name', department = '$department' WHERE id = $doctor_id";
if (mysqli_query($conn, $sql)) {
  echo 'success';
} else {
  echo mysqli_error($conn);
}

// 关闭数据库连接
mysqli_close($conn);
?>

几个注意事项

  • 记得把代码里的数据库连接信息、医生表名替换成你自己的实际内容
  • 可以给文本框加更多验证(比如姓名不能为空),在前端JS或者后端PHP里都能处理
  • 如果不想用AJAX,也可以用传统表单提交,把所有字段放到<form>标签里,提交到save_doctor.php后再跳转回结果页就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:01:00