2016-04-06 23 views
0

Ich versuche, in Datenbankzeile zu speichern. Aber ich bekomme immer Fehler.Ich kann keine Zeile in die Datenbank einfügen mit PHP

Mein Code ist:

function save_activation_key($connection, $username, $key) { 
    $date = time(); 
    $is_used = 0; 
    $query = "INSERT INTO account_activation_key ( key, date, is_used) 
    VALUES ( '" . $username . "'," 
       . " '" . $date . "'," 
       . " '" . $is_used . "')"; 
    $retval = mysql_query($query, $connection); 
    echo $retval; 
    $retval = mysql_query($query, $connection); 
    if(! $retval) 
    { 
     die('Could not enter data: ' . mysql_error()); 
    }  
} 

In $connection gültige Verbindung zur Datenbank ist.

Datenbankstruktur:

id : int 
key: varcha(45) 
date: date 
is_used: tinyint(1) 

Wenn ich meinen Code nenne ich Fehler:

Could not enter data: 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 'key, date, is_used) VALUES ( 'uzivatelsky_jmeno', '1459971829', '0')' at line 1 

Wo ist ein Problem?

Vielen Dank für Hilfe

+0

Können Sie 'Ihre Abfrage-Anweisung echo' und prüfen, ob sie gültig? – Maximus2012

+0

Bitte verwenden Sie nicht [die MySQL-Datenbankerweiterung] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), es ist veraltet (für immer gegangen in PHP7) Besonders, wenn Sie nur PHP lernen, verbringen Sie Ihre Energie beim Lernen der 'PDO' oder' mysqli_' Datenbankerweiterungen, [und hier ist einige Hilfe zu entscheiden, welche zu verwenden] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-uses-mysql-funktionen-in-php) – RiggsFolly

Antwort

3

key ist ein MYSQL reserviertes Wort und sollte nicht wirklich als Spaltennamen verwendet werden.

MYSQL Reserved Words List can be found here https://dev.mysql.com/doc/refman/5.7/en/keywords.html

Wenn Sie jedoch diese Spaltennamen in Backticks umbrechen, können Sie damit durchkommen.

Sie können auch Ihre Query-String-Verkettung wie folgt vereinfachen, was das Debuggen erheblich erleichtert.

function save_activation_key($connection, $username, $key) { 
    $date = time(); 
    $is_used = 0; 
    $query = "INSERT INTO `account_activation_key` 
        ( `key`, `date`, `is_used`) 
       VALUES ('$username', '$date', '$is_used')"; 

    $retval = mysql_query($query, $connection); 
    echo $retval; 
    $retval = mysql_query($query, $connection); 
    if(! $retval) 
    { 
     die('Could not enter data: ' . mysql_error()); 
    }  
} 

BIG NOTE

Please dont use the mysql_ database extension , it is deprecated (gone for ever in PHP7) Which means this code will never run when all that is available is PHP7 or greater. Especially if you are just learning PHP, spend your energies learning the PDO or mysqli_ database extensions, and here is some help to decide which to use

+0

nur 'key' ist Smokey nicht' date'. –

+0

Ich wusste, dass Sie mit diesem Kommentar übereinstimmen würden. Arternoon Ralph @ Fred-ii- – RiggsFolly

+0

* Nachmittag Smokey * –

-2

wahrscheinlich die Abfrage einen Fehler an der Stelle enthält, wo man ganze Zahl als String, wie die Zeichenfolge geben ‚“. $ Usernamen „‚“ .„‘“. $ Datum. "'," . "'". $ is_used. "'

sollte sein: '". $ username. '', "." . $ Datum. “, "". $ Is_used. "

die ganzen Zahlen mit einzelnem qoutes seines should'nt" '"

wahrscheinlich ist dies der Fehler!

Verwandte Themen