gpt4 book ai didi

php - 通过 MYSQL Explode 只允许 1 个赞成票

转载 作者:行者123 更新时间:2023-11-28 23:56:45 24 4
gpt4 key购买 nike

我正在我的网站上创建一个投票系统。目前,upvotes 正在工作,但我想将 upvotes 限制为每个用户 1 个。通过更新总票数来添加票数:

mysqli_query($connection,"UPDATE news SET votes=(votes + 1) WHERE ID='". $_POST['id1'] . "'");

然后我通过以下方式记录用户对该文章的投票:

mysqli_query($link,"UPDATE users SET votes=CONCAT(votes,'" . $_POST['id1'] .",') WHERE ID='". $_SESSION['ID'] . "'");

现在,我尝试实现仅在文章 ID 不在他们的“投票”数据库中时才允许投票。我正在存储像 1,4,7,12 这样的投票,这样用户就可以对文章 1、4、7 和 12 进行投票。所以我正在尝试使用 explode 来检查他们是否已经对文章进行了投票文章:

$results = mysqli_query($link2,"SELECT * FROM users WHERE ID ='" . $_SESSION['ID'] . "'");

while($result = mysqli_fetch_array( $results )){

$votes = explode(",", $result['votes']);

foreach($votes as $vote) {

if ($vote = $_POST['id1']) {
//Do nothing
} else {
mysqli_query($connection,"UPDATE news SET votes=(votes + 1) WHERE ID='". $_POST['id1'] . "'");
mysqli_query($link,"UPDATE users SET votes=CONCAT(votes,'" . $_POST['id1'] .",') WHERE ID='". $_SESSION['ID'] . "'");

任何有关完成同一件事的更好方法的帮助或建议将不胜感激,谢谢!

最佳答案

使用投票表:

CREATE TABLE voted (
user_id INT NOT NULL,
news_id INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (news_id) REFERENCES news(id)
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

对此添加唯一约束:

CREATE UNIQUE INDEX idx_voted_nn_1 ON voted (user_id,news_id);

然后使用一些在约束问题上退出的 php 代码:

$connection = new mysqli("example.com", "user", "password", "database");
$query="INSERT INTO voted (user_id,news_id) VALUES (?,?)";
$stmt=$connection->query($query);
$stmt->bind("ii",$_SESSION['ID'],$_POST['ID']);
$stmt->execute();
$error=$mysqli_stmt->errno($stmt);
if(!$error) update your news vote;
else do nothing or say something to user;

关于php - 通过 MYSQL Explode 只允许 1 个赞成票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31484223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com