如何在表单提交中传递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的问题,你的注册处理代码还有两个需要修正的地方,避免后续报错:
- 对Choice_ID做安全转义:和其他表单字段一样,要使用
mysqli_real_escape_string防止SQL注入:
$choice = mysqli_real_escape_string($conn, $_POST['Choice_ID']);
- 修正Results表的INSERT语句:
Result_ID如果是自增主键,不需要手动赋值,直接留空或者写NULLCust_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
相关产品推荐
相关产品推荐

