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