繁体   English   中英

将数组样式数据保存到mysql数据库(JSON)

[英]Save array style data to mysql database (JSON)

我有一个网站,其中某些内容使用投票功能。 我有一个MySQL数据库,存储所有内容条目,每个用户登录时都有一个INT ID。如何在数据库中存储可变数量的数据,以便检查特定用户是否投票已经防止双重投票。 我已经尝试过了,但不确定它是否工作正常。

当用户提交投票表时,数据库中保存的现有字符串将通过post $_POST['voted']发送给表单,然后我需要将刚刚投票的人的ID添加到json字符串中,并将其保存回mysql数据库。 $_SESSION['ID']保存用户ID,在mysql中Voted的字段类型为TEXT

$json = array();
$json = var_dump(json_decode($_POST['voted']));
$json[] = $_SESSION['ID'];
$Voted = json_encode($json);

您将json解码为数组

$json = json_decode($your_data_from_mysql_query, true); //When TRUE, returned objects will be converted into associative arrays. 

然后使用此函数http://php.net/manual/en/function.in-array.php检查用户是否已经在数组中添加了他的ID,如果不存在,则填充数组并继续进行操作工作流程。

不要使用会话。 而是添加一个新表,该表将用户和投票主题连接在一起。 用户对某个主题进行投票时,请将用户ID和主题ID添加到此表中。 在允许用户投票之前,请检查此表。

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`users`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`users` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`vote_topics`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`vote_topics` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`users_has_vote_topics`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`users_has_vote_topics` (
  `users_id` INT NOT NULL ,
  `vote_topics_id` INT NOT NULL ,
  PRIMARY KEY (`users_id`, `vote_topics_id`) ,
  INDEX `fk_users_has_vote_topics_vote_topics1_idx` (`vote_topics_id` ASC) ,
  INDEX `fk_users_has_vote_topics_users_idx` (`users_id` ASC) ,
  CONSTRAINT `fk_users_has_vote_topics_users`
    FOREIGN KEY (`users_id` )
    REFERENCES `mydb`.`users` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_users_has_vote_topics_vote_topics1`
    FOREIGN KEY (`vote_topics_id` )
    REFERENCES `mydb`.`vote_topics` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM