0

所以我试图为每个用户名制作一个独一无二的计数器。

我正在尝试这样做,如果用户名不在数据库中,它会将用户名插入到名为 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{}
4

3 回答 3

1

这一行有两个错误:

if ($numrows = '')  
  1. 您正在分配 ( =),而不是比较值 (=====)。

  2. mysql_num_rows()返回一个整数,而不是空字符串。

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

if ($numrows === 0)  

仅供参考,您不应该mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-05-26T17:33:00.563 回答
0

您可能应该做的是在其上创建一个唯一索引,username然后使用

-- first do: CREATE UNIQUE INDEX ix_clicks ON clicks(username);

INSERT INTO clicks VALUES ('username', 1)
  ON DUPLICATE KEY UPDATE clicks = clicks + 1;

它将在一个操作中执行插入/更新,而无需对数据库进行额外查询。

一个用于测试的 SQLfiddle

于 2013-05-26T17:38:05.447 回答
0

为什么不在用户名字段上设置唯一键并改用它

mysql_query("INSERT INTO clicks (username, clicks) VALUES ('$ytusernamecheck', 1) 
on duplicate key update clicks=clicks+1");

只有 1 个 SQL 语句以这种方式执行

于 2013-05-26T17:38:14.623 回答