gpt4 book ai didi

php num_rows 不工作

转载 作者:行者123 更新时间:2023-11-29 07:49:00 25 4
gpt4 key购买 nike

我有一个简单的函数来检查用户是否已经在我的网站上注册。如果是,则不会添加它们,如果不是,则添加它们。然而,在我的数据库中,由于某些奇怪的原因,某个用户使用完全相同的 id 被添加了多次。 mysqli_num_rows 有问题吗?

  $check = mysqli_query($con, "SELECT id FROM users WHERE id='$id'");
$row_cnt = mysqli_num_rows($check);
if ($row_cnt == 0) {
$query = "INSERT INTO users (id,username) VALUES ('$id','$username')";
mysqli_query($con, $query);
} else { // If Returned user . update the user record
$query = "UPDATE users SET username='$username' where id='$id'";
mysqli_query($con, $query);
}

最佳答案

这里有一些事情。

首先,众所周知,num_rows() 并不总是返回正确的值。如果您想知道有多少行符合某个条件,请使用此查询,然后读取单行结果集中的行计数。

SELECT COUNT(*) AS rowcount FROM users WHERE id='$id'

其次,您似乎正在尝试执行条件插入/更新操作。在这种情况下,您最好使用使用 INSERT ... ON DUPLICATE KEY UPDATE mySQL 命令。这可以解决您问题代码中的竞争条件。

您想要这样的查询:

INSERT INTO users (id,username) VALUES ('$id','$username')
ON DUPLICATE KEY UPDATE username='$username';

http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html

这将一次性添加您想要的行或更改现有行中的用户名。如果其他用户尝试同时做同样的事情,这将安全地完成。

关于php num_rows 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com