PHP Mysql IF 语句

标签 php mysql if-statement

我目前正在开发一个有 2 个链接的网站。赞成票和反对票。 投票存储在 mysql 中名为“data”的表中,其中包含“yes”和“no”列

我已成功创建一个查询来更新"is"或“否”的计数,然后将值回显到页面。然而,目前用户可以垃圾点击按钮,并且计数将持续增加。

我已开始使用 $ip = $_SERVER['REMOTE_ADDR']; 记录 IP 地址;并将它们放入名为“ips”的表中,其中包含“ipaddresses”列。

现在,我想更改我的代码,以便它将查询 mysql 并检查“ips”表中的 $ip,如果返回 true,则 die(); else if... 执行点赞查询。这将使一个人每个 IP 只能投票一次。

这是我当前的代码:

<?php
if ($_GET['vote']=="yes") {
    // Connection to database
    $connection=mysqli_connect("hostname-here","username-here","password-here","database-here");
    // Check connection
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    mysqli_query($connection,"UPDATE data SET yes = (yes + 1) WHERE ID = $_GET[id];");
    mysqli_close($connection);

    echo "Voted.";     
}
?>

帮助将不胜感激,我已经用谷歌搜索了很多,但找不到任何有用的东西。谢谢!

最佳答案

如果有人已经投票,您不应该使用 IP 作为决定因素。多个用户可以来自同一个 IP。

如果您想这样做,您应该创建一个新表。我们称之为“user_action”。该表应该有一个名为 IP 的列,另一个名为 VOTE 的列。您必须记录每个单独的用户操作,并在更新“数据”表之前检查 IP。

编辑:一些伪代码可以为您提供更多帮助。

创建您的表:

CREATE TABLE user_action (IP varchar(39), VOTE tinyint(1));

简单的 PHP 逻辑。只需填写实际的 MySQL 命令(您显然已经知道如何从您的 OP 中执行此操作)

    $sSql = "SELECT vote FROM user_action WHERE IP = '" . $_SERVER['REMOTE_ADDR'] ."'";

    If (rowcount > 1) {
        //User already voted, update their answer.
        $sSql = "UPDATE user_action SET vote = " .$_GET['vote']. " WHERE IP = '" . $_SERVER['REMOTE_ADDR'] ."'";
    }
    Else {
        //User hasn't voted, insert their answer
        $sSql = "INSERT INTO user_action (vote, ip) VALUES(" .$_GET['vote']. ", '" . $_SERVER['REMOTE_ADDR'] ."'";
    }

如果您想知道您有多少票:

$sSql = "SELECT sum(vote) FROM user_action WHERE vote = 1";

关于PHP Mysql IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599172/

相关文章:

mysql - 获取 SQL 中特定列值较小的行

mysql - 哪些工具可用于记录遗留数据库模式(PDF、DOC、HTML、RTF)

ios - 条件下在其他情况下的预期表达

c - AND 和 OR 运算符 c

php - 获取预期的目标 url 而不会丢失中间件中的值

javascript - 来自 PHP 的 CodeIgniter 访问 Controller 需要

php - 如何在 PHP 中导入 csv 文件?

javascript - 如何通过我的网络服务器创建一个使用 php 作为代理的外部站点 iframe? (避免 CORS)

mysql - 无法使用 psycopg2 在 postgres 中创建临时表

java - 如何&& if循环表达式求值?