2016-11-14 1 views
0

Ok ..私は立ち往生しています。私はここで話題からいくつかのコードを試しましたが、まだ私のために働いていないので少し助けてください。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); ?> 

私はいくつかが私よりも明るいアイデアを持っている願っています;-)

+++++++++++++++++++++++++++++++++++++++++++++++++++

問題SOLVED 。私は気づいた!

私はif(isset($ _ SESSION ['id']))文の外で関数を呼び出しました。

if(isset($ _ SESSION ['id']))ステートメントの中に入れた後、テーブルに挿入されたレコードは1つだけです!!

+0

私はあなたの機能がうまくいくと思います。 –

+1

FYIあなたは 'INSERT ... ON DUPLICATE KEY UPDATE ... 'を使って2つのクエリを組み合わせることができます – Barmar

+1

' INSERT'クエリは 'last_login'を設定しますが、' last_login'は設定しません。 – Barmar

答えて

0

問題解決済み。私は気づいた!

私の機能は、私のif(isset($_SESSION['id']))の外側です。

if(isset($_SESSION['id']))ステートメントの中に入れた後、テーブルに挿入されたレコードは1つだけでした!!

+0

元の問題を表示するには、質問を編集する必要があります。それがなければ答えは意味をなさない。 – Barmar

関連する問題