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

如何获取数据库搜索行的列值?固定ID查询问题求助

解决根据order_inv搜索获取对应行数据的问题

我来帮你搞定这个问题!你现在的代码之所以不管搜什么都只显示ID=1的行,核心原因是SQL查询完全没用到用户提交的order_inv参数,而是硬写死了查id=1的固定数据。下面是具体的修改方案,还会帮你规避SQL注入的风险:

核心修改步骤

1. 获取用户提交的搜索参数

首先在result.php里,要先拿到用户从搜索表单提交的order_inv值,还要做基本的有效性检查:

// 先开启session(如果要用$_SESSION存储数据,必须放在代码最开头)
session_start();

// 检查是否有有效提交的order_inv参数
if (!isset($_POST['order_inv']) || empty(trim($_POST['order_inv']))) {
    // 如果没有有效参数,跳回搜索页面
    header("Location: search.php");
    exit;
}
$order_inv = trim($_POST['order_inv']);

2. 使用预处理语句执行安全查询

绝对不要直接把用户输入拼进SQL语句里,这会导致严重的SQL注入漏洞。我们用MySQLi的预处理语句来安全查询:

// 准备预处理语句,?是参数占位符
$stmt = mysqli_prepare($connz, "SELECT * FROM add_courier WHERE order_inv = ?");
// 绑定参数:"s"表示参数是字符串类型,对应后面的$order_inv
mysqli_stmt_bind_param($stmt, "s", $order_inv);
// 执行查询
mysqli_stmt_execute($stmt);
// 获取查询结果集
$res = mysqli_stmt_get_result($stmt);

3. 处理查询结果并提取字段值

接下来检查是否找到对应记录,然后提取你需要的字段:

if (mysqli_num_rows($res) > 0) {
    // 因为快递单号(order_inv)应该是唯一的,用fetch_assoc获取单条数据即可
    $row = mysqli_fetch_assoc($res);
    
    // 提取你需要的字段值
    $tracking = $row['tracking'];
    $s_name = $row['s_name'];
    $phone = $row['phone'];
    $address = $row['address'];
    $_SESSION['id'] = $row['id'];

    // 这里可以添加代码把数据展示给用户,比如:
    echo "<h3>Tracking Result</h3>";
    echo "<p>Recipient Name: $s_name</p>";
    echo "<p>Phone: $phone</p>";
    echo "<p>Address: $address</p>";
    echo "<p>Tracking Code: $tracking</p>";
} else {
    // 没有找到对应记录时的提示
    echo "<p>Sorry, no tracking record found for the shipping number you entered.</p>";
}

// 记得关闭语句和结果集,释放资源
mysqli_stmt_close($stmt);
mysqli_free_result($res);

重要注意事项

  • 确保你的数据库表add_courier中确实存在order_inv列,别把列名拼写错了。
  • 如果你的order_inv列是数字类型,绑定参数时把"s"改成"i"即可。
  • session_start();必须放在result.php的最顶部,任何输出之前,否则$_SESSION无法正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:15:41