JSON Ausgabe in Datenbank übertragen?

1 Antwort

In $data bekommt du einen String. Das foreach erwartet ein Array, daher die Fehlermeldung. Werfe das $data nach dem Einlesen in json_decode, dann bekommst du mit dem passenden Parameter ein Array zurück. Das lasse dir erstmal mit var_dump ausgeben, du willst wahrscheinlich in dem foreach nur über ein Unterarray ("measures") iterieren, um an die value / unit -Paare zu kommen...

Woher ich das weiß:Studium / Ausbildung – Informatiker

Klose901 
Fragesteller
 14.07.2021, 21:18

Ich habe jetzt mal den Code umgestellt um mir die $data anzeigen zu lassen:

Quellcode:

$connect = new mysqli("db", "root", "example", "mydb"); //Connect PHP to MySQL Database
$query = '';
$table_data = '';
if (!$connect){
        echo "Fail: ", mysqli_connect_error();
    }else{
        echo"Verbindung steht!";
    }
$data = file_get_contents('https://684b7212dh91.ngrok.io/weight.php'); 
$array = json_decode($data, true); //Convert JSON String into PHP Array
var_dump($array); 

Dabei bekomme ich folgende Antwort:

"Verbindung steht!NULL"

Wenn ich aber "https://684b7212dh91.ngrok.io/weight.php" separat aufrufe, bekomme ich meine Messergebnisse angezeigt?!

0
iQa1x  14.07.2021, 21:23
@Klose901

Lass dir mal $data ausgeben, ob da auch null drin steht oder aber noch irgendwas zusätzlich zum JSON, was das json_decode nicht mag. Wenn da auch NULL drin steht, geht halt schon das file_get_contents schief, dann musst du nach den url wrappern in PHP schauen, ob die an sind, oder ob ddf. das Zertifikat da drin kaputt ist, etc...

0
Klose901 
Fragesteller
 14.07.2021, 22:32
@iQa1x

Da bekomme ich folgende Antwort raus:

Verbindung steht!string(0) ""

0
iQa1x  14.07.2021, 23:13
@Klose901

Komplett kaputt ist das nicht, weil kein false kommt, aber es kommt halt ein leerer String zurück.. schaue mal, was in $http_response_header steht...

0
Klose901 
Fragesteller
 14.07.2021, 23:21
@iQa1x

Da kriege ich die Antwort:

Verbindung steht!array(10) { [0]=> string(15) "HTTP/1.0 200 OK" [1]=> string(50) "Cache-Control: no-store, no-cache, must-revalidate" [2]=> string(17) "Content-Length: 0" [3]=> string(38) "Content-Type: text/html; charset=UTF-8" [4]=> string(35) "Date: Wed, 14 Jul 2021 21:20:38 GMT" [5]=> string(38) "Expires: Thu, 19 Nov 1981 08:52:00 GMT" [6]=> string(16) "Pragma: no-cache" [7]=> string(30) "Server: Apache/2.4.38 (Debian)" [8]=> string(62) "Set-Cookie: PHPSESSID=f3937c2bebb3cedb6f0b1075a3e63048; path=/" [9]=> string(24) "X-Powered-By: PHP/7.4.21" } NULL

0
iQa1x  15.07.2021, 08:57
@Klose901

Da musst du auf dem sendenden Server suchen, warum der nix schickt, der sagt zwar als Status Ok, schickt dann aber keine Daten (Content-Length; 0)... Braucht der ein Login / Cookies oder so was ?

0
Klose901 
Fragesteller
 22.07.2021, 13:49
@iQa1x

Sorry für die späte Antwort. Ich habe das ganze jetzt über einen 'include'-Befehl gelöst und es klappt soweit alles. Trotzdem Danke für die ganzen Tipps!

0