2016-07-21 13 views
0

Wenn ich diesen Code ausführen, wird der Wert in der SQL-Basis 5x hinzugefügt.PHP MySQL-Problem

Code:

function token($u) { 
    include('../config.php'); 
    $token=md5(rand()+$u); 
    $date = date('Y-m-d H:i:s'); 
    $tokenQuery = 'INSERT INTO '.$prefix.'tokens(`token`, `user`, `date`) VALUES ("'.$token.'","'.$u.'","'.$date.'")'; 
    $mysqli->query($tokenQuery); 
} 

token ('filips'); 

Sehen Sie, wie es meine SQL-Basis aussehen

enter image description here

Meine config:

$host = 'my server'; 
$user = 'my username'; 
$pass = 'my password'; 
$data = 'pn_16734995_filipcms_demo'; 
$prefix = 'fc_'; 

$mysqli = new mysqli($host,$user,$pass, $data); 
$mysqli->query("SET NAMES 'utf8'"); 

if ($mysqli->connect_errno) { 
    echo "Server not working: (" . $mysqli->connect_errnor. ") " . $mysqli->connect_error; 
} 
+0

Was in Ihrer Konfigurationsdatei ist? Nur Datenbankverbindungskram? – Dave

+0

Haben Sie Ihre Funktion in einer Schleife aufgerufen? – Pirate

+0

Die Funktion wird 5 Mal aufgerufen. –

Antwort

0

Nichts in Ihrem Code wird die INSERT-Anweisung geschehen 5 mal. Wenn Sie jedoch echo "function called"; innerhalb Ihrer Funktion sehen, können Sie sehen, ob die Funktion 5 mal aufgerufen wird, dann können Sie herausfinden, wo die Zeile Ihre Funktion 5 Mal aufgerufen wird.

+0

Ist nur 1x geschrieben –

+0

Ich weiß, aber haben Sie versucht, die "Echo" -Funktion namens ";" in Ihrer Funktion? An anderer Stelle können Sie die Funktion 5 Mal aufrufen. Die Funktion selbst fügt nicht 5 mal ein, aber wenn Sie die Funktion 5 Mal aufrufen, erhalten Sie das gleiche Ergebnis. – Dave

+0

Ich finde heraus, dass das richtige Token nur der erste ist, der in der Basis enthalten ist –

0

Sie müssen nicht die gesamte Datei einschließen, übergeben Sie $ mysqli als Parameter oder fügen Sie sie in einen globalen Bereich ein;

function token($u,$mysqli) { 
} 

ODER

function token($u) { 
global $mysqli; 
}