2016-07-21 13 views
0

このコードを実行すると、SQLベースの値が5倍になります。PHP MySQLの問題

コード:

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'); 

はそれが

enter image description here

私のSQLベースを見てどのように参照してください私の設定です:あなたのコード内

$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

configファイルには何が?ちょうどデータベース接続のもの? – Dave

+0

関数をループで呼び出されましたか? – Pirate

+0

関数が5回呼び出されています。 –

答えて

0

何がINSERT文を起こらせるんだろう5回。しかし、関数内にecho "function called";がある場合、その関数が5回コールされているかどうかを確認できます。次に、関数が5回コールされた行の上の位置を調べることができます。

+0

書くだけですか? –

+0

私は知っていますが、関数内で ";"と呼ばれる 'echo '関数を試しましたか?他の場所では、関数を5回呼び出すかもしれません。関数自体は5回挿入されませんが、関数を5回呼び出すと同じ結果が得られます。 – Dave

+0

私は正しいトークンがちょうど最初のトークンであることを知ります –

0

ファイル全体を含める必要はありません。パラメータとして$ mysqliを渡すか、グローバルスコープに入れるだけです。

function token($u,$mysqli) { 
} 

OR

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