如何获取option标签选择值用PHP构造SQL查询并输出手机维修价格
实现步骤
1. 调整HTML代码,支持参数提交
原有select标签无name属性,无法将用户选择传递给后端,需要包裹form表单、补充name属性和提交按钮,option的value值直接对应数据库字段/取值,减少后续转换成本:
<!-- 可和PHP代码放在同一个.php文件中 --> <form method="post" action=""> <select name="device" required> <option value="">Select device</option> <option value="iphone_8">iPhone 8</option> <option value="iphone_xs">iPhone XS</option> </select> <select name="issue" required> <option value="">Select issue</option> <option value="battery">Battery</option> <option value="waterdamage">Water Damage</option> </select> <button type="submit" name="query_price">查询维修价格</button> </form>
2. PHP接收参数并做安全校验
因为要将用户选择的机型作为查询字段使用,不能直接拼接进SQL语句,必须加白名单校验,避免SQL注入风险:
- 允许的机型列表:
['iphone_8', 'iphone_xs'] - 允许的故障列表:
['battery', 'waterdamage']
只有用户选择的内容在白名单内,才继续执行查询逻辑。
3. 构造SQL查询并返回价格
使用预处理查询绑定故障参数,进一步提升安全性,完整PHP逻辑如下:
<?php // 替换为你自己的数据库配置 $db_host = 'localhost'; $db_user = '你的数据库用户名'; $db_pwd = '你的数据库密码'; $db_name = '你的数据库名'; $repair_table = '你的维修价格表名'; // 触发查询逻辑 if (isset($_POST['query_price'])) { // 接收用户提交的参数 $selected_device = trim($_POST['device']); $selected_issue = trim($_POST['issue']); // 白名单校验 $allow_devices = ['iphone_8', 'iphone_xs']; $allow_issues = ['battery', 'waterdamage']; if (!in_array($selected_device, $allow_devices) || !in_array($selected_issue, $allow_issues)) { echo '<p style="color:red;">请选择有效的设备和故障类型</p>'; exit; } // 连接数据库 $conn = new mysqli($db_host, $db_user, $db_pwd, $db_name); if ($conn->connect_error) { die('数据库连接失败:' . $conn->connect_error); } // 构造预处理SQL,机型已过白名单可安全拼接,故障参数用绑定方式传入 $sql = "SELECT `$selected_device` AS repair_price FROM $repair_table WHERE issue = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param('s', $selected_issue); $stmt->execute(); $res = $stmt->get_result(); if ($res->num_rows > 0) { $price = $res->fetch_assoc()['repair_price']; echo "<p>对应维修价格为:\${$price}</p>"; } else { echo "<p>未查询到对应维修价格</p>"; } // 释放资源 $stmt->close(); $conn->close(); } ?>
补充说明
如果需要实现无刷新查询效果,只需额外加一段JS代码,监听选择框变化或者表单提交事件,通过AJAX将参数传给后端接口,拿到返回的价格后直接渲染到页面指定位置即可。
内容的提问来源于stack exchange,提问作者user16315703
相关产品推荐
相关产品推荐

