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

如何在PHP查询语句中拼接JavaScript变量sup_id

解决JS变量传入PHP查询的问题

你当前的写法行不通——PHP是服务器端先执行,JS是页面加载后在客户端运行,当JS拿到sup_id时,PHP代码早就执行完毕并输出到前端了,没法直接把JS变量塞进PHP的SQL查询里。下面给你两种可行的解决方案:

方案1:用AJAX异步请求后端接口

前端通过AJAX把sup_id传给后端PHP文件,由后端执行查询后返回结果:

let sup_id = $(this).val();
// 发送请求到后端处理文件
$.ajax({
  url: 'get_lead_time.php',
  type: 'GET',
  data: { supplier_id: sup_id },
  success: function(response) {
    // 拿到后端返回的lead time,赋值给sup变量
    let sup = response;
    // 这里写拿到数据后的业务逻辑
  },
  error: function() {
    console.log('请求供应商数据失败');
  }
});

对应的后端get_lead_time.php代码(注意用预处理语句防SQL注入):

<?php
// 假设$conn是已初始化的数据库连接
$supplier_id = $_GET['supplier_id'];
// 预处理查询避免注入
$stmt = $conn->prepare("SELECT supplier_lead_time FROM `supplier_list` WHERE id=?");
$stmt->bind_param("i", $supplier_id); // "i"表示参数为整数类型
$stmt->execute();
$result = $stmt->get_result();
$lead_time = $result->fetch_array()[0];
echo $lead_time;
$stmt->close();
?>

方案2:提前加载所有供应商数据到JS对象

如果供应商数据量不大,可以在页面加载时用PHP把所有供应商的ID和lead time输出到JS对象中,后续直接用JS变量取值,无需额外请求:

<?php
// 提前查询所有供应商数据
$result = $conn->query("SELECT id, supplier_lead_time FROM `supplier_list`");
$supplier_map = [];
while ($row = $result->fetch_assoc()) {
  $supplier_map[$row['id']] = $row['supplier_lead_time'];
}
?>

前端JS部分:

// 把PHP数组转成JS对象
const supplierLeadTimes = <?php echo json_encode($supplier_map); ?>;

// 拿到sup_id后直接取值
let sup_id = $(this).val();
let sup = supplierLeadTimes[sup_id];

注意:无论用哪种方案,都要重视SQL注入风险,方案1的预处理语句、方案2的提前批量查询,都是安全的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:55:23