2017-03-31 23 views
0

Hey Ich habe eine Online-Datenbank, die regelmäßig mit Sensorwerten gefüllt werden muss. Es gibt 7 Variablen (Spalten), die mit einer Zeitstempelspalte gekoppelt sind, um jede Zeile der Tabelle zu bilden. Problem ist, dass diese Variablen ein paar Mal hintereinander mit dem Rest als 0 geschoben werden. Jetzt kodiere ich einen Algorithmus, der nur dann eine Zeile einfügt, wenn alle Werte der letzten Zeile (nach Zeitstempel) vollständig gefüllt sind (nicht 0), sonst wird die letzte Zeile aktualisieren. Hier ist mein PHP-Code für eine der PHP-Dateien einfügen, die 3 Variablen gleichzeitig einfügt - Temperatur, Druck und Höhe. ?Wie werden bestimmte Zeilen durch Vergleichen von Zeitstempeln aktualisiert?

<?php 

// Prepare variables for database connection 

$dbusername = "uxpertla_terr"; // enter database username, I used "arduino" in step 2.2 
$dbpassword = "abc123"; // enter database password, I used "arduinotest" in step 2.2 
$server = "localhost"; 

// Connect to your database 

$dbconnect = mysqli_connect($server, $dbusername, $dbpassword); 

// Prepare the SQL statement 
    $sdl = "SELECT * FROM uxpertla_test_db.testt ORDER BY time DESC LIMIT 1"; 
    $snd=mysqli_query($sdl); 
    $row = mysqli_fetch_array($snd,MYSQLI_ASSOC); 
    if($row) 
    { 
    if($row['Temperature']==0||$row['Pressure']==0||$row['Humidity']==0||$row['Light']==0) 
    { 
    $sql = "UPDATE uxpertla_test_db.testt 
    SET temp='".$_GET["value"]."', 
    pressure='".$_GET["value2"]."', 
    altitude='".$_GET["value3"]."' 
    WHERE time=".strtotime($row['time']).""; 
    } 
    else 
    $sql = "INSERT INTO uxpertla_test_db.testt 
    (temp,pressure,altitude) VALUES('".$_GET["value"]."', '".$_GET["value2"]."','".$_GET["value3"]."')"; 
    } 
    else 
    $sql = "INSERT INTO uxpertla_test_db.testt 
    (temp,pressure,altitude) VALUES('".$_GET["value"]."', '".$_GET["value2"]."','".$_GET["value3"]."')"; 

// Execute SQL statement 

mysqli_query($sql); 

>

Sorry, wenn der Code ist nicht schön, aber ich brauche Hilfe bei der where-Klausel der Update-Abfrage in der zweiten, wenn Block ..

+0

Wenn Sie einen Zeitstempel targeting sind, etwa in ‚zwischen‘ eine Zeit der eingestellten Zeit, könnten Sie den SQ verwenden L Zwischen Schlüsselwort. WHERE timeValue liegt zwischen 'timeOne' und 'timeTwo'. Entschuldigung für die freie Hand –

+0

Sie verwenden nicht überwachte, unsichere, veraltete Datenbankfunktionen. PHP hat die Verwendung von Alternativen seit mehr als einem Jahrzehnt gefördert. Hör einfach auf! http://StackOverflow.com/Q/12859942/1255289 – miken32

+0

Ich bin mir der Veraltetheit bewusst, aber alle mysql-Funktionen funktionieren. Sie sind nicht das Problem. Das Problem ist die Where-Klausel der Update-Anweisung. Bitte helfen Sie mir mit dieser Zeile .. –

Antwort

0

die Antwort durchschaut hat ..: p

<?php 

// Prepare variables for database connection 

$dbusername = "uxpertla_terr"; // enter database username, I used "arduino" in step 2.2 
$dbpassword = "abc123"; // enter database password, I used "arduinotest" in step 2.2 
$server = "localhost"; 

// Connect to your database 

$dbconnect = mysqli_connect($server, $dbusername, $dbpassword); 

    $sdl = "SELECT * FROM uxpertla_test_db.testt ORDER BY time DESC LIMIT 1"; 
    $snd=mysqli_query($dbconnect,$sdl); 
    $row = mysqli_fetch_array($snd,MYSQLI_ASSOC); 
    if($row['Temperature']==0||$row['Pressure']==0||$row['Humidity']==0||$row['Light']==0) 
    { 
    $sql = "UPDATE uxpertla_test_db.testt 
    SET temp='".$_GET["value"]."', 
    pressure='".$_GET["value2"]."', 
    altitude='".$_GET["value3"]."' 
    ORDER BY time DESC LIMIT 1";   
    } 
    else 
    $sql = "INSERT INTO uxpertla_test_db.testt 
    (temp,pressure,altitude) VALUES('".$_GET["value"]."', '".$_GET["value2"]."','".$_GET["value3"]."')"; 

// Execute SQL statement 

mysqli_query($dbconnect,$sql); 

?>

Verwandte Themen