【问题标题】:mysql insert into creates 2 records in table rowmysql insert into 在表行中创建2条记录
【发布时间】:2016-11-14 21:27:47
【问题描述】:

好吧..我卡住了。我在这里尝试了几个主题中的代码,但仍然不适合我,所以我需要一些帮助。

如果用户第一次登录,我想登录,如果用户返回,我想更新相同的记录。更新部分有效,但是当我的函数第一次执行时,它会插入一条空白记录和一条包含变量提供的所有数据的记录。 last_login 列对于第一次访问为 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'])) 语句中后,表中只插入了一条记录!

【问题讨论】:

  • 我觉得你的功能看起来不错。
  • 仅供参考,您可以使用 INSERT ... ON DUPLICATE KEY UPDATE ... 组合这两个查询
  • INSERT 查询集 first_login,但不是 last_login
  • 我怀疑你调用了两次函数,其中一个有空参数。这个函数不可能自己创建两行。
  • @Barmar:这是更新的(它应该)并且没有插入。这完美无缺。您的“INSERT ... ON DUPLICATE KEY UPDATE”听起来很有趣。会试一试。谢谢。

标签: php mysqli insert


【解决方案1】:

问题已解决。我顿悟了!!!

我在if(isset($_SESSION['id'])) 语句之外调用了我的函数。

在我把它放在if(isset($_SESSION['id'])) 语句中后,表中只插入了一条记录!!

【讨论】:

  • 您应该编辑问题以显示原始问题。没有它,答案就没有意义。
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
相关资源
最近更新 更多