-1

我正在建立一个评分系统,用户可以在其中“喜欢”或“不喜欢”东西。MySQL 更新一切正常。问题是我想添加限制,以便用户只能“喜欢”或“不喜欢”一次。基本上,我想用布尔值来做,但不能正确编写代码。有人可以帮我处理布尔值吗?这是代码:

<?php
$tries=0;
if (((isset($_POST['hidden']))&&$tries<2) {
    $tries++;
    $likes++;
    $up = mysql_query("Update videos SET Likes='$likes' WHERE Name='$name'");
}
?>

希望这些信息足够了。

4

2 回答 2

1

这个答案将告诉您您应该实现的目标。我不会编写代码来让您从现在的位置到此。但我相信它应该可以帮助您获得一个好主意。

首先,假设您有一个likes具有以下结构的表:

user_id INT(11) NOT NULL
video_id INT(11) NOT NULL
PRIMARY KEY(user_id, video_id)

然后,在您的代码中,您可以(我在此示例中使用 PDO,因为我不会容忍使用mysql_*函数):

$statement = $pdo->prepare('INSERT INTO likes (user_id, video_id) VALUES (:user_id, :video_id)');
$statement->bindValue(':user_id', $userId);
$statement->bindValue(':video_id', $videoId);

try {
    // The idea is that, if the user/video combination already exists - the above
    // query will throw an exception so you won't execute the code below this line
    $statement->execute();

    $likes = $pdo->prepare('UPDATE video SET likes = likes + 1 WHERE video_id = :video_id');
    $likes->bindValue(':video_id', $videoId);
    $likes->execute();
} catch (PDOException $exception) {
    // if it was a duplicate key exception, then the likes on the video 
    // have not been updated and you can print a friendly error message to your
    // users here
}
于 2013-03-12T15:29:19.950 回答
0

您需要在用户上存储一些数据点,然后使用 PHP 会话、cookie 和/或任何其他方式通过某个数据点“了解用户”,以便当他们返回时,您可以知道他们已经在那里。

您想记住回来的用户的程度将决定您采取的行动方案。

于 2013-03-12T15:25:40.723 回答