2016-07-20 6 views
0

Ich bekomme Syntaxfehler mit meinem Code in der Abfrage-Anweisung, aber ich kann nicht herausfinden, warum. Ich habe id, token, gpslat, gpslong als meine Tabellenspalten. Ich möchte den Datensatz aktualisieren, wenn der Token-Name identisch ist, andernfalls einfügen. Ich bekomme Fehler. Folgendes ist mein PHP-Code.in Tabelle einfügen oder aktualisieren für doppelten Schlüssel Fehler in PHP

<?php 

header('Content-Type: application/json'); 

$token = $_GET['token']; 
    $gps = $_GET['gps']; 
$date = $_GET['gpslat']; 
    $uname; 

    $newlogin=FALSE; 
    $json;$idx; 
    include("dbsave.php"); 

    $sql = "INSERT INTO whosonline (token,gpslat,gpslong) VALUES ('$token', '$date', '$gps') ON DUPLICATE KEY gpslat='$date',gpslong='$gps'"; 

    if ($conn->query($sql) === TRUE) { 
    // echo "New record created successfully"; 
    $newlogin=TRUE; 
    $idx= mysqli_insert_id($conn); 

    $sql = "SELECT * FROM tokentable WHERE token='$token'"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
    $uname = $row["username"]; 
    } 
    } else { 
     $newlogin=FALSE; 

     } 


     } else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
     $newlogin=FALSE; 
     } 

Fehler Ich erhalte: Error: INSERT INTO whosonline (token,gpslat,gpslong) VALUES ('{3CAD0B79-41DA-2CFC-9A9A-644B3E1A93C7}', '11.1241', '101.21020') ON DUPLICATE KEY gpslat='11.1241',gpslong='101.21020'<br>You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'gpslat='11.1241',gpslong='101.21020'' at line 1{"status":0,"msg":{"msg":"Error adding user!"}}

+0

Sie sollten immer schreiben, welchen Fehler Sie erhalten. Wir sind keine Gedankenleser. Außerdem ist Ihr Code offen für SQL-Injektionen. –

+0

@JohnConde getan. Bitte überprüfen Sie die aktualisierte Frage. Vielen Dank! –

Antwort

1

Sie haben vergessen, die UPDATE Stichwort im ON DUPLICATE KEY Teil der Abfrage:

$sql = "INSERT INTO whosonline (token,gpslat,gpslong) VALUES ('$token', 
     '$date', '$gps') ON DUPLICATE KEY UPDATE gpslat='$date',gpslong='$gps'"; 
Verwandte Themen