【问题标题】:Display clicks for each user显示每个用户的点击次数
【发布时间】:2017-10-12 05:22:54
【问题描述】:

所以我学习了 PHP,我想尝试构建一个小型货币化 url 缩短器之类的东西,只是为了好玩!因此,每次有人点击用户链接时,都应在 MySQL 表中添加一次点击(针对用户)。我尝试了很多脚本,但它们都不起作用。

<html lang="en-US">
<?php
$servername = "***";
$username = "***";
$password = "***";
$dbname = "***";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

mysqli_query("UPDATE users SET 'hits' = 'hits'+1 WHERE id = 1");

?>

然后通过 $row[''] 在用户仪表板中显示点击...但是当我加载页面时它不计算点击... mysql 数据库中的数字不会改变。 .. 我究竟做错了什么。 Alsom你有更专业的想法如何做到这一点,因为我知道这不是一个好的选择......我也有类似的东西,但它也不起作用......

      $user_ip=$_SERVER['REMOTE_ADDR'];
      $check_ip = mysqli_query("select userip from pageview where page='1' and userip='$user_ip'");
      if(mysqli_num_rows($check_ip)>=1)
      {

      }
      else
      {
        mysqli_query("insert into pageview values('1','1','$user_ip')");
         mysqli_query("update users set 'hits' = 'hits'+1 where id=1 ");

  }

【问题讨论】:

  • 警告:当使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 您对列 hits 使用了错误的表示法。尝试删除单引号,它们不是必需的。如果确实需要转义列名,请使用反引号。
  • mysqli_query("UPDATE users SET hits = hits+1 WHERE id = 1");我试过了,但它也不起作用
  • 我试着用这些`
  • “不起作用”不够详细。你有错误吗?这可以通过mysql 命令行工作吗?

标签: php mysql


【解决方案1】:

如果您习惯了mysql_query,则需要以不同的方式执行此操作,需要连接句柄,不再隐含。避免在这方面犯错的最好方法是使用面向对象的调用方法:

$conn->query(...);

这种方法通常不那么冗长。

【讨论】:

  • 你能说得更详细些吗
  • 它工作了
  • “大网站”使用不同的数据库驱动等等,但基本原理是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
相关资源
最近更新 更多