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

PHP预约系统时间插入数据库异常问题求助

问题原因分析

核心问题出在PHP的参数绑定类型错误:

  • 你在bind_param中使用了"sssi",最后一个字符i表示将$time作为整数类型绑定到SQL语句,但$time是形如"14:30:00"的字符串。
  • 当PHP把时间字符串转换为整数时,会只提取冒号前的数字(比如"14:30:00"会被转为整数14),MySQL收到这个整数后,会将其解析为秒数存入time类型字段,最终显示为00:00:14。

另外HTML存在一个不规范细节:<option value=09:30:00>的value属性未加引号,虽然浏览器可能兼容,但容易引发潜在解析问题。

解决方案

1. 修正PHP参数绑定类型

将bind_param的类型字符串从"sssi"改为"ssss",把时间参数作为字符串类型绑定:

$stmt->bind_param("ssss", $name, $email, $date, $time);

2. 规范HTML的option属性

将无引号的value=09:30:00改为value="09:30:00",保持所有option的value属性格式一致:

<option value="09:30:00">09:30:00 </option>

3. 数据库字段建议

如果之前将字段改为varchar,建议改回time类型,这样能利用数据库的时间类型校验和相关函数操作,保证数据规范性。

修改后的完整PHP脚本
// Database connection here
$conn = mysqli_connect($host, $username, $password, $dbname);

if (!$conn) {
  die("Connection failed:" . mysqli_connect_error());
}

$name = $_POST['patient_name'];
$email= $_POST['patient_email'];
$date = $_POST['appointment_date'];
$time = $_POST['appointment_time'];

// Prepare and execute SQL statement
$stmt = $conn->prepare("INSERT INTO appointments (patient_name, patient_email, appointment_date, appointment_time) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $name, $email, $date, $time);
$stmt->execute();

// Close connection and redirect to confirmation page
$stmt->close();
$conn->close();
header("Location: confirmation.php");
exit();
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:57:08