PHP извлекает внешний API для заполнения таблицы базы данных и обновления таблицы, если данные отличаются - PullRequest
0 голосов
/ 29 марта 2019

Как мы можем использовать php для извлечения данных из внешнего API и заполнения таблицы mysql из этого? Я хочу обновить детали в базе данных, если будут внесены какие-либо изменения в детали данных в API.

Я могу использовать guzzleHttp для вызова API, но каков наилучший подход для вставки данных в таблицу mysql?

извлеченные данные составляют около 500 строк, например:

{"name": "Escape", "id": "553",...},
{"name": "Excursion","id": "5675",...}

Перебирая все извлеченные данные и проверяя, есть ли в базе данных такая запись? Затем обновить эту запись, если в каком-то столбце есть другие данные?

1 Ответ

0 голосов
/ 30 марта 2019

Простой способ - просто попробовать обновления. Если они не приводят к чистым изменениям данных, это нормально. «Измененные строки» будут равны нулю от такого изменения.

Предполагая, что у вас есть соединение 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";

Если результат JSON из вашего API сформирован неправильно, у него будут проблемы. Например, если есть дополнительные поля, помимо тех, которые у вас есть в качестве заполнителей в вашем запросе SQL. Или, если массив объектов JSON не ограничен [ ].

...