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

PHP从API获取数据写入MySQL时字段值异常问题求助

问题原因
  • 核心问题是你的SQL插入语句中,字符串类型的字段值没有用单引号包裹。sender字段对应存储的$transaction->from一般是字符串类型(比如链上地址哈希),直接拼接进SQL时没有引号,MySQL会将其识别为数值进行隐式转换,最终写入数据库的内容和原始值完全不一致。
  • 额外问题:直接拼接外部来源参数到SQL语句存在严重的SQL注入风险,且你使用的mysql_*系列函数已经在PHP 7.0及以上版本被完全移除,兼容性和安全性都没有保障。
解决方案

临时验证方案(仅用于确认问题,不推荐生产使用)

给字符串类型的参数加上单引号,同时对参数做转义处理,避免特殊字符破坏SQL语法:

// 假设你已有数据库连接实例$conn,使用mysqli做转义示例
foreach ($transactions->result as $transaction) {
    echo "From: " . $transaction->from . "<br>";
    echo "Value: " . $transaction->value . "<br>";
    echo "Time: " . $transaction->timeStamp . "<br>";
    echo "<hr>";
    $from = mysqli_real_escape_string($conn, $transaction->from);
    $value = mysqli_real_escape_string($conn, $transaction->value);
    $timeStamp = mysqli_real_escape_string($conn, $transaction->timeStamp);
    mysql_insert("INSERT INTO `api` (`sender`, `amount`, `time`) VALUES ('$from', '$value', '$timeStamp');");
}

生产环境推荐方案

改用PDO或者MySQLi的预处理语句实现数据库操作,既可以自动处理参数的类型识别、转义、引号包裹,也能彻底避免SQL注入风险,同时兼容目前所有支持的PHP版本。以下是PDO实现示例:

<?php
// 初始化PDO数据库连接,替换为你自己的数据库配置
$pdo = new PDO('mysql:host=127.0.0.1;dbname=你的数据库名;charset=utf8mb4', '数据库用户名', '数据库密码');
// 设置PDO错误模式为异常模式,方便调试
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$url = "hiddenurl";
$transactions = json_decode(file_get_contents($url));

// 预编译SQL语句,只需要编译一次,循环内重复执行性能更高
$insertStmt = $pdo->prepare("INSERT INTO `api` (`sender`, `amount`, `time`) VALUES (?, ?, ?)");

foreach ($transactions->result as $transaction) {
    echo "From: " . $transaction->from . "<br>";
    echo "Value: " . $transaction->value . "<br>";
    echo "Time: " . $transaction->timeStamp . "<br>";
    echo "<hr>";
    // 绑定参数执行,不需要手动处理引号和转义
    $insertStmt->execute([
        $transaction->from,
        $transaction->value,
        $transaction->timeStamp
    ]);
}

include 'layout/overall/footer.php'; 
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:51:00