Vroeger kon ik met

$content = file_get_contents("php://input");
//convert json object to php associative array
$json = json_decode($content,true);

waardes uit een url halen maar nu werkt dat niet meer.

Kan iemand mijn vertellen hoe ik

"name":"iSpindel000","ID":125392,"angle":77.06406,"temperature":34.0625,"battery":4.671533,"gravity":27.02963,"interval":1

kan ontleden? Ik kan de post welke het apparaat geeft namelijk niet aanpassen.


Onderstaand heb ik de aangepaste code staan maar deze krijg ik op een of andere manier niet werkend.Ik denk dat het te maken heeft met het : wat ertussen staat.




<?php
date_default_timezone_set('Europe/Amsterdam');
$servername = "localhost";
$username = "user";
$password = "paswoord";
$dbname = "name";
$time = date('Y-m-d h:i:s A');
$unixtime = strtotime($time);
// Create connection
$conn = new mysqli($servername, $username,$password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

if(isset($_GET["name"])) { // alleen als er data is meegegeven voeren we dit uit
echo "ok".$_GET;
$data = $_GET["name\"\:\""]; // parameter ophalen
$data1 = $_GET["angle"]; // parameter ophalen
$data2 = $_GET["temperature"]; // parameter ophalen
$data3 = $_GET["battery"]; // parameter ophalen
$data4 = $_GET["wort"]; // parameter ophalen

}


//$content = file_get_contents("php://input");
//convert json object to php associative array
$json = json_decode($content,true);

$sql = "INSERT INTO fermentervalues (name, angle, temperature, battery, wort, string ) VALUES( '$data', '$data1', '$data2', '$data3', '$data4', '$unixtime')";
if ($conn->query($sql) === TRUE) {

} else {

echo "Error:" . $sql . "<br>" . $conn->error;
}
$conn->close();

echo "ok";
?>
Heb je al gekeken of het via $_POST binnen komt?
Ja dat gaf hetzelfde antwoord als GET
Kan je het niet met je Arduino naar een bestand schrijven? Als is het om te testen.
Nee de arduino software is door iemand anders geschreven en geeft deze output
Ah.

Zag dit al eerder in jouw tweede codefragment:
"INSERT INTO fermentervalues (name, angle, temperature, battery,    wort, string )  VALUES( '$json[name]', '$json[angle]', '$json[temperature]', '$json[battery]', '$json[gravity]', '$unixtime')";


Voor de goede orde zouden de kolomnamen voorzien moeten worden van quotes (anders worden deze geinterpreteerd als (niet-bestaande) constanten), en zouden deze velden ook ge-escaped moeten worden in de SQL-context, bijvoorbeeld als volgt:

<?php
$sql = "
    INSERT INTO fermentervalues (
        name, angle, temperature, battery, wort, string
    ) VALUES (
        '".mysqli_real_escape_string($conn, $json['name'])."',
        '".mysqli_real_escape_string($conn, $json['angle'])."',
        '".mysqli_real_escape_string($conn, $json['temperature'])."',
        '".mysqli_real_escape_string($conn, $json['battery'])."',
        '".mysqli_real_escape_string($conn, $json['gravity'])."',
        '".mysqli_real_escape_string($conn, $unixtime)."'
    )";
?>

Indien je de object georienteerde notatie gebruikt van mysqli kan de bovenstaande code nog wat korter.

Reageren