首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL命中计数器

MYSQL命中计数器
EN

Stack Overflow用户
提问于 2013-05-27 01:31:15
回答 3查看 727关注 0票数 0

因此,我试图使每个用户名的命中计数器是唯一的。

我正在尝试这样做,如果用户名不在数据库中,它会将用户名插入到名为username的字段中,并将点击量1插入到名为click的内容中。

如果用户名已经存在,我想让它在现有的点击值上加一个。我试着让它不区分大小写。然而,它似乎不起作用!

代码语言:javascript
复制
  $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{}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-27 01:38:05

您可能应该做的是在username上创建一个唯一的索引,而不是使用this

代码语言:javascript
复制
-- 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

票数 0
EN

Stack Overflow用户

发布于 2013-05-27 01:33:01

这一行有两个错误:

代码语言:javascript
复制
if ($numrows = '')  

正在赋值(=)的

  1. ,而不是比较值(===返回整数,而不是空字符串。

您的最终结果应该如下所示:

代码语言:javascript
复制
if ($numrows === 0)  

仅供参考,you shouldn't use mysql_* functions in new code。它们不再由and are officially deprecated维护。看到red box了吗?相反,学习,并使用PDOMySQLi - this article将帮助您决定使用哪种方法。如果你选择PDO,here is a good tutorial

票数 1
EN

Stack Overflow用户

发布于 2013-05-27 01:38:15

为什么不在用户名字段中设置一个唯一的键并使用下面的键呢

代码语言:javascript
复制
mysql_query("INSERT INTO clicks (username, clicks) VALUES ('$ytusernamecheck', 1) 
on duplicate key update clicks=clicks+1");

只有一条SQL语句可以这样执行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16761872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档