因此,我试图使每个用户名的命中计数器是唯一的。
我正在尝试这样做,如果用户名不在数据库中,它会将用户名插入到名为username的字段中,并将点击量1插入到名为click的内容中。
如果用户名已经存在,我想让它在现有的点击值上加一个。我试着让它不区分大小写。然而,它似乎不起作用!
$query = mysql_query("SELECT * FROM clicks WHERE username='$ytusernamecheck'");
$numrows = mysql_num_rows($query);
if ($numrows < 0)
{
mysql_query("INSERT INTO clicks (username, clicks)
VALUES ('$ytusernamecheck', 1)");
echo $numrows;
}
else{}发布于 2013-05-27 01:38:05
您可能应该做的是在username上创建一个唯一的索引,而不是使用this;
-- first do: CREATE UNIQUE INDEX ix_clicks ON clicks(username);
INSERT INTO clicks VALUES ('username', 1)
ON DUPLICATE KEY UPDATE clicks = clicks + 1;它将在一个操作中完成插入/更新,而不需要对数据库进行额外的查询。
An SQLfiddle to test with。
发布于 2013-05-27 01:33:01
这一行有两个错误:
if ($numrows = '') 正在赋值(=)的
=或==返回整数,而不是空字符串。您的最终结果应该如下所示:
if ($numrows === 0) 仅供参考,you shouldn't use mysql_* functions in new code。它们不再由and are officially deprecated维护。看到red box了吗?相反,学习,并使用PDO或MySQLi - this article将帮助您决定使用哪种方法。如果你选择PDO,here is a good tutorial。
发布于 2013-05-27 01:38:15
为什么不在用户名字段中设置一个唯一的键并使用下面的键呢
mysql_query("INSERT INTO clicks (username, clicks) VALUES ('$ytusernamecheck', 1)
on duplicate key update clicks=clicks+1");只有一条SQL语句可以这样执行
https://stackoverflow.com/questions/16761872
复制相似问题