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

如何将MySQL数据库中的单行数据存储到PHP变量中?

PHP代码修正与JS变量传递方案

你的代码存在几个关键问题:

  • 数据库连接对象不统一:用mysqli_connect()得到$link,但查询时错误使用$mysqli->query(),导致调用失败。
  • printf参数不匹配:占位符数量(2个)和传入参数数量(3个)不一致,输出会异常。
  • 未利用传入的$id:SQL查询未关联$_GET['id'],如果目标是获取指定ID的用户数据,逻辑缺失。
  • 缺少向JS传递数据的逻辑:现有代码仅输出文本,无法直接被JavaScript调用。

修正方案1:获取指定ID的用户数据并传给JS

适合你需要根据$_GET['id']获取单个用户信息的场景:

<?php
// 处理未传id的情况,避免报错
$id = $_GET['id'] ?? '';
$name = "";
$lat = '';
$lng = '';

// 统一使用$link作为连接对象
$link = mysqli_connect("localhost", "root", "", "projectppy");

if (mysqli_connect_errno()) {
    printf("Falló la conexión: %s", mysqli_connect_error());
    exit();
}

// 用预处理语句防SQL注入,绑定id参数
$query = "SELECT name, lat, lng FROM customers WHERE ID = ? LIMIT 1";
$stmt = mysqli_prepare($link, $query);
// 假设ID是整数类型,用"i";如果是字符串则用"s"
mysqli_stmt_bind_param($stmt, "i", $id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

// 提取数据到变量
if ($row = mysqli_fetch_assoc($result)) {
    $name = $row["name"];
    $lat = $row["lat"];
    $lng = $row["lng"];
}

// 释放资源
mysqli_stmt_close($stmt);
mysqli_close($link);
?>

<!-- 将PHP变量传递给JavaScript -->
<script>
// 安全赋值给JS变量,避免XSS和语法错误
const customerName = '<?php echo htmlspecialchars($name, ENT_QUOTES); ?>';
const customerLat = <?php echo is_numeric($lat) ? $lat : 'null'; ?>;
const customerLng = <?php echo is_numeric($lng) ? $lng : 'null'; ?>;

// 示例函数:使用这些变量
function handleCustomerData() {
    console.log('客户名称:', customerName);
    console.log('纬度:', customerLat);
    console.log('经度:', customerLng);
}

// 调用测试
handleCustomerData();
</script>

修正方案2:获取所有用户数据并传给JS

如果需要获取所有用户列表供JS使用:

<?php
$link = mysqli_connect("localhost", "root", "", "projectppy");

if (mysqli_connect_errno()) {
    printf("Falló la conexión: %s", mysqli_connect_error());
    exit();
}

$query = "SELECT name, lat, lng FROM customers ORDER BY ID DESC";
$result = mysqli_query($link, $query);

// 收集所有用户数据到数组
$customers = [];
while ($row = mysqli_fetch_assoc($result)) {
    $customers[] = $row;
}

mysqli_close($link);
?>

<script>
// 将PHP数组转为JSON格式,直接赋值给JS变量
const customers = <?php echo json_encode($customers); ?>;

// 示例:遍历用户数据
function displayCustomers() {
    customers.forEach(customer => {
        console.log(`${customer.name} - 坐标: (${customer.lat}, ${customer.lng})`);
    });
}

displayCustomers();
</script>

关键说明

  • SQL注入防护:用预处理语句绑定参数,避免直接拼接用户输入到SQL中,提升安全性。
  • XSS防护:用htmlspecialchars()处理字符串变量,防止恶意脚本注入到JS中。
  • 数据类型兼容:数值类型(纬度/经度)直接输出,非数值则设为null,保证JS语法正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:40:01