簡體   English   中英

api-> JSON-> MySQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM