[英]Api -> JSON -> MySQL
首先,到目前為止,我已經收集了信息,而JSON方式的自學內容完全來自該站點上的信息! 非常感謝大家。
好。 我有一個可以訪問其API的平台。 該平台發出我必須采取措施的警報。.這是被抽出的JSON的示例。
[id] => 11573
[type] => CONDITION
[status] => TRIGGERED
[message] => ERROR MESSAGE: It's all gone wrong..
[data] => The thingie has popped
[severity] => MAJOR
[result] =>
[source] => ITEM1
[os_user_name] =>
[timestamp] => Tue, 23 Jan 2018 22:28:46 GMT
[can_reset] => 1
[device] => Array (
[id] => 3
)
使用PHP,將數據從[ID]到[can_reset]放入MySQL DB / Table; 我已經整理好了。 但是我只是無法正確獲取將DEVICE-> ID放入表中的語法。.到目前為止,這是我迄今為止無法做到的。 (很多在線搜索。
$conn = new mysqli('localhost', 'user', 'password', 'database');
if ($conn->errno) {
printf("Connect failed: %s\n", $conn->error);
exit();
}
// Create a datetime in RFC1123 format
$dateTime = new DateTime();
$requestDateTime = $dateTime->format(DATE_RFC1123);
// Create signature for request
$stringToSign = getStringToSign('GET', null, null, $requestDateTime, $ALERTS_URL);
$signature = getSignature($SECRET_ACCESS_KEY, $stringToSign);
// Add request headers
$curl->addHeader('Authorization', 'NJ ' . $ACCESS_KEY_ID . ':' . $signature);
$curl->addHeader('Date', $requestDateTime);
// make the request, parse the JSON response and display it
$response = $curl->get($API_HOST . $ALERTS_URL);
$data = json_decode($response);
foreach ( $data as $inv ) {
$list_id = $inv->id;
$list_type = $inv->type;
$list_status = $inv->status;
$list_message = $inv->message;
$list_data = $inv->data;
$list_severity = $inv->severity;
$list_result = $inv->result;
$list_source = $inv->source;
$list_os_user_name = $inv->os_user_name;
$list_timestamp = $inv->timestamp;
$list_device_id = $inv->device->id; <---THIS IS WHAT I CANT GET RIGHT!
$sql = $conn->prepare("INSERT ignore INTO alerts
(list_id, list_type, list_status, list_message, list_data, list_severity, list_result, list_source, list_os_user_name, list_timestamp, list_device_id,)
VALUES
('".$list_id."', '".$list_type."', '".$list_status."', '".$list_message."', '".$list_data."', '".$list_severity."', '".$list_result."', '".$list_source."', '".$list_os_user_name."', '".$list_timestamp."', '".$list_device_id."')");
if ($result = $sql->execute())
{
echo "success";
$sql->free_result();
}
else {
echo "error";
}
}
$conn->close();
預先感謝您在JSON / PHP / MySQL方面為這個菜鳥提供的幫助
錯誤出在您執行的SQL查詢中。 到處都是錯誤
更新完整代碼
<?php
$conn = new mysqli('localhost', 'user', 'password', 'database');
if ($conn->errno) {
printf("Connect failed: %s\n", $conn->error);
exit();
}
// Create a datetime in RFC1123 format
$dateTime = new DateTime();
$requestDateTime = $dateTime->format(DATE_RFC1123);
// Create signature for request
$stringToSign = getStringToSign('GET', null, null, $requestDateTime, $ALERTS_URL);
$signature = getSignature($SECRET_ACCESS_KEY, $stringToSign);
// Add request headers
$curl->addHeader('Authorization', 'NJ ' . $ACCESS_KEY_ID . ':' . $signature);
$curl->addHeader('Date', $requestDateTime);
// make the request, parse the JSON response and display it
$response = $curl->get($API_HOST . $ALERTS_URL);
$data = json_decode($response);
foreach ( $data as $inv ) {
$list_id = (int)$inv->id;
$list_type = $conn->real_escape_string($inv->type);
$list_status = $conn->real_escape_string($inv->status);
$list_message = $conn->real_escape_string($inv->message);
$list_data = $conn->real_escape_string($inv->data);
$list_severity = $conn->real_escape_string($inv->severity);
$list_result = $conn->real_escape_string($inv->result);
$list_source = $conn->real_escape_string($inv->source);
$list_os_user_name = $conn->real_escape_string($inv->os_user_name);
$list_timestamp = (int)$inv->timestamp;
$list_device_id = (int)$inv->device['id'];
$sql = $conn->prepare("
INSERT ignore INTO alerts
(list_id, list_type, list_status, list_message, list_data, list_severity, list_result, list_source, list_os_user_name, list_timestamp, list_device_id)
VALUES
('$list_id', '$list_type', '$list_status', '$list_message', '$list_data', '$list_severity', '$list_result', '$list_source', '$list_os_user_name', '$list_timestamp', '$list_device_id');
");
if($sql->execute()){
echo "success";
$sql->free_result();
} else {
echo'Error: '.$sql->error;
}
}
$conn->close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.