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

如何在表单提交中传递Choice_ID至PHP注册处理程序?

解决Undefined index: Choice_ID的问题

这个错误的核心原因很明确:你的表单里的下拉选择框(<select>)没有设置name属性,PHP的$_POST超全局变量只能获取带有name属性的表单元素的值,所以当表单提交时,Choice_ID根本没有被传递到后台。

第一步:给下拉框添加name属性

修改你生成<select>的PHP代码,给它加上name="Choice_ID":

// 原来的代码
$string = '<br><select id="choice">';
// 修改后
$string = '<br><select id="choice" name="Choice_ID">';

这样当用户选择选项并提交表单时,选中的Choice_ID就会以$_POST['Choice_ID']的形式被PHP获取到。

第二步:修复PHP代码里的潜在问题

除了Undefined index的问题,你的注册处理代码还有两个需要修正的地方,避免后续报错:

  1. 对Choice_ID做安全转义:和其他表单字段一样,要使用mysqli_real_escape_string防止SQL注入:
$choice = mysqli_real_escape_string($conn, $_POST['Choice_ID']);
  1. 修正Results表的INSERT语句:
    • Result_ID如果是自增主键,不需要手动赋值,直接留空或者写NULL
    • Cust_ID应该是刚插入到Customers表的用户ID,用mysqli_insert_id($conn)获取:
// 先执行Customers的插入
$result = $conn->query($sql);
// 获取刚插入的用户ID
$cust_id = mysqli_insert_id($conn);
// 修正Results的INSERT语句
$query = "INSERT INTO Results (Result_ID, Cust_ID, Choice_ID) VALUES (NULL, '$cust_id', '$choice')";
$results = $conn->query($query);

额外检查:确保表单结构正确

你的<form>标签是在第一个折叠面板里开始,在第二个折叠面板里结束,这个结构是没问题的,所有表单元素都被包裹在同一个<form>里,提交时能一起传递数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:55