如何将PHP表单下拉列表选中值传递至MySQL查询并解决查询结果无法输出问题
问题排查与修复方案
我来帮你梳理下这个问题的根源,然后给出针对性的修复方案:
核心问题分析
你在result.php里犯了两个关键错误:
- 直接输出查询结果对象:
$conn->query($sql)返回的是一个mysqli_result对象,不是具体的邮编值,直接echo $result只会输出对象的字符串标识(比如mysqli_result Object),而不是你需要的字段内容。 - 存在SQL注入风险:直接把用户输入的
$customerv拼进SQL语句里,哪怕客户名称唯一,也会带来安全隐患。
修复后的result.php代码
<table> <?php require_once('config.php'); // 先校验提交的客户数据是否有效 if(isset($_POST['Customer']) && trim($_POST['Customer']) !== ""){ $customerv = $_POST['Customer']; echo "<tr><td>选中客户:</td><td>$customerv</td></tr>"; // 使用预处理语句安全查询邮编 $sql = "SELECT shiptozipcode FROM BP WHERE BPName = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("s", $customerv); // "s"表示绑定字符串类型参数 $stmt->execute(); $stmt->bind_result($shiptozipcode); // 将查询结果绑定到变量 $stmt->fetch(); // 获取具体数据 // 输出邮编信息 if($shiptozipcode !== null){ echo "<tr><td>客户邮编:</td><td>$shiptozipcode</td></tr>"; } else { echo "<tr><td colspan='2'>未找到该客户的邮编记录</td></tr>"; } $stmt->close(); } else { echo "<tr><td colspan='2'>请先选择一个客户再提交</td></tr>"; } $conn->close(); ?> </table>
额外小优化
你的index.php里<select>标签多写了一个冗余属性,应该修正为:
<select id="customer" name="Customer">
(去掉开头的Customer,符合HTML规范)
内容的提问来源于stack exchange,提问作者Chen
相关产品推荐
相关产品推荐

