2016-11-14 61 views
0

好的..我卡住了。我在這裏嘗試了幾個主題的代碼,但仍然不適合我,所以我需要一些幫助。mysql插入在表格行中創建2條記錄

我想記錄用戶是否第一次登錄,並且想要在用戶返回時更新同一記錄。更新部分工作,但是當我的函數第一次執行時,它會插入一個總空白記錄和一個包含變量提供的所有數據的記錄。 last_login列對於第一個vist是NULL,並且很好地用最後一次登錄進行更新。

但我不明白爲什麼第一次登錄創建這些額外的記錄。

下面是函數的代碼,我創建了:

function log_users($userId, $username, $achternaam, $district, $gemeente, $ipaddress) 
{ 
    global $connection; 

    $sql = mysqli_query($connection, "SELECT * FROM logfile_sap WHERE user_id = '{$userId}'"); 

    if(mysqli_num_rows($sql) > 0) 
    { 

     $sql = "UPDATE logfile_sap SET last_login = NOW() WHERE user_id = '{$userId}'"; 
     $query = mysqli_query($connection, $sql); 

    } 
    else 
    {  

     $sql = "INSERT INTO logfile_sap 
       (user_id, username, achternaam, district, gemeente, ipaddress, first_login) 
       VALUES 
       ('{$userId}', '{$username}', '{$achternaam}', '{$district}', '{$gemeente}', '{$ipaddress}', NOW())"; 
     $query = mysqli_query($connection, $sql); 

    } 
} 

因此,大家可以看到我檢查,如果用戶在logfile_sap表已經存在,如果它不存在,我想插入用戶(其工作,但有一個額外的行),如果用戶已經存在記錄更新。

這是我對需要檢查,並在表格中新增數據頁面的頂部使用的代碼:

<?php log_users($userId, $username, $achternaam, $district, $gemeente, $ipaddress); ?> 

我希望有比我;-)

更加美好的想法++++++++++++++++++++++++++++++++++++++++++++

問題已解決。我有一個頓悟!

我調用了我的函數我的if(isset($ _ SESSION ['id']))語句。

在我把它放在if(isset($ _ SESSION ['id']))語句之後,只有一條記錄被插入到表格中!

+0

我認爲你的功能似乎很好。 –

+1

僅供參考,您可以使用INSERT ... ON DUPLICATE KEY UPDATE ...' – Barmar

+1

'INSERT'查詢設置first_login而不是last_login。 – Barmar

回答

0

問題已解決。我有一個頓悟!

我打電話給我的函數OUTSIDE我的if(isset($_SESSION['id']))聲明。

在我把它放入if(isset($_SESSION['id']))聲明之後,只有一條記錄被插入到表格中!

+0

您應該編輯問題以顯示原始問題。沒有它,答案是沒有意義的。 – Barmar