2017-05-09 4 views
-2

nicht aktualisieren Es scheint keinen Syntaxfehler zu geben, da die SELECT-Abfrage funktioniert. Wenn ich versuche, die Werte einzufügen, wird es in meiner Tabelle nicht aktualisiert. Es scheint keinen Fehler im Code zu geben. Die Abfrage scheint in VS gut zu funktionieren. Ich habe Beiträge mit dem gleichen Titel überprüft und versucht, auf meinen Code anzuwenden, die bisher noch nicht funktioniert haben. Hier ist mein Code, wo ich zuerst auf das Problem stieß. Meine Frage ist, wie behebe ich dies und aktualisieren Sie die Tabelle in meiner Datenbank? Jede mögliche Hilfe würde geschätzt, vielen Dank für das LesenPHP INSERT Abfrage kann Daten in Tabelle

$ServerName = 'SQL2008.net.dcs.hull.ac.uk'; 
$connectionInfo = array("Database"=>"rde_505405"); 
$conn = sqlsrv_connect($ServerName,$connectionInfo); 
if($conn== false) 
{ 
    echo 'Connection could not be established'; 
    exit('Disconnecting'); 
} 
else 
{ 
    echo 'Database located!'; 
    echo '</br>'; 
    $StaffNUM = $_POST["SID"]; 
    $FirstName = $_POST['Fname']; 
    $Surname = $_POST['Sname']; 
    $Location = $_POST['Location']; 
    $Date = date('Y-m-d h:i:sa'); 

    echo 'First Name: ', $FirstName; Echo'</br>,</br>'; 
    echo 'Surname: ', $Surname; Echo'</br>,</br>'; 
    echo 'Location: ', $Location; Echo'</br>,</br>'; 
    echo 'Entered at: ', $Date; Echo'</br>,</br>'; 

    $SQLquery = ("INSERT INTO Location (STAFFID, 'First Name', Surname, 
    Location, Time) 
    VALUES ('".$StaffNUM."''".$FirstName."', '".$Surname."', 
    '".$Location."', '".$Date."');"); 
    $results = sqlsrv_query($conn, $SQLquery); 
    echo '<br>'; 
    echo '<br>'; 
    echo 'Entry added successfully';  
    } 
sqlsrv_close($conn); 
+1

Ihr Skript ist gefährdet von [ SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Sehen Sie sich an, was mit [Little Bobby Tables] passiert ist (http: // bobby-tables.com/) Sogar [wenn Sie Eingaben entgehen, ist es nicht sicher!] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php). –

+0

Dieser Code ist schrecklich, aber Sie verpassen ein Komma zwischen ''". $ StaffNUM. "'' Und ''". $ FirstName. "',' – junkfoodjunkie

+0

@junkfoodjunkie Danke für die Eingabe, keine Ausreden müssen für meine gemacht werden Codierung. – Tenkin

Antwort

0

Sie vermissen ein Komma zwischen $StaffNUM und $FirstName

Bitte den Code für SQL-Abfrage ändern:

$SQLquery = ("INSERT INTO Location (STAFFID, First Name, Surname, Location, Time) VALUES ('$StaffNUM', '$FirstName', '$Surname', '$Location', '$Date')"); 

dies sollte funktionieren:)

+0

Hallo, Ihr Vorschlag hat leider nicht funktioniert, die Tabelle zeigt immer noch Null in jeder Zelle an – Tenkin

0

Ich habe am Ende herausgefunden, was falsch war, meine Lösung war, die Abfrage auf VS zu kodieren, die die Fehler hervorhob. Zum Beispiel kam ich zu der Erkenntnis, dass Spalte First Name war ein armer Name aufgrund des Platzes und entfernt den Raum, um es FirstName zu machen. Ich habe auch @ Thaiseers Korrektur modifiziert, indem ich jeder Variablen '' hinzufüge. Und schließlich wurde mein Tisch Datentyp datetime mir erlaubt, setzen die Funktion GETDATE()

Modified-Code

$SQLquery = "INSERT INTO Location (STAFFID, FirstName, Surname, Location, Time) 
    VALUES ('$StaffNUM','$FirstName', '$Surname', '$Location', GETDATE())"; 

Hoffentlich hilft anderen zu verwenden, die sich in einer ähnlichen Situation

0

umschließen die Felder mit ` `und verwenden Sie auch keine reservierten Wörter als Datenfeld,

$SQLquery = ("INSERT INTO Location (`STAFFID`, `First Name`, `Surname`, `Location`, `Time`) 
    VALUES ('$StaffNUM', '$FirstName', '$Surname', '$Location', '$Date')");