我们如何使用php从外部API获取数据并从中填充mysql表?如果对API中的数据的详细信息进行任何更改,我想更新数据库中的详细信息。
我可以使用guzzleHttp进行API调用,但是将数据插入mysql表的最佳方法是什么?
获取的数据大约是500行,如下所示:
{"name": "Escape", "id": "553",...},
{"name": "Excursion","id": "5675",...}
循环遍历所有获取的数据并检查数据库是否有这样的记录?然后更新该记录,如果某列中有不同的数据?
一种简单的方法是简单地尝试更新。如果它们导致数据没有净变化,那没关系。 “受影响的行”将从这种变化中归零。
假设你在变量$pdo
中有一个到你的数据库的PDO连接,而$api_result
是你所展示的行的JSON数组,我会像这样编码:
$data = json_decode($api_result, true);
$sql = "UPDATE mytable SET name=:name, date=:date WHERE id=:date";
$stmt = $pdo->prepare($sql);
$rowCount = 0;
foreach ($data as $row) {
$stmt->execute($row);
$rowCount += $stmt->rowCount();
}
echo "$rowCount rows updated.\n";
如果您的API的JSON结果未正确形成,则会出现问题。例如,如果除了SQL查询中的占位符之外还有其他字段。或者,如果JSON对象数组未由[ ]
分隔。