PHP / SQL - Multiply主键(重复更新)

时间:2014-09-21 17:50:08

标签: php mysql sql

我的数据库中有这个表:

CREATE TABLE IF NOT EXISTS `grid_users` (
  `userid` int(11) NOT NULL,
  `times_played` int(4) NOT NULL DEFAULT '0',
  `won_total` varchar(50) NOT NULL DEFAULT '0',
  `won_1` varchar(50) NOT NULL DEFAULT '0' COMMENT 'Did user win prize 1? If yes, show badge',
  `won_1_time` int(22) NOT NULL,
  `won_2` int(1) NOT NULL DEFAULT '0',
  `won_2_time` int(22) NOT NULL,
  `won_3` int(1) NOT NULL,
  `won_3_time` int(22) NOT NULL,
  `last_update` int(22) NOT NULL,
  `type` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

如您所见," userid"被设置为主键。

虽然我希望PHP检查两个列是否存在,以及是否存在 - >更新:

if($type == "1"){
$stmt = $dbh->prepare("INSERT INTO grid_users (type) 
            VALUES ('1') ON DUPLICATE KEY UPDATE won_total=won_total+'1';");

            }elseif($type == "2"){
            $stmt = $dbh->prepare("INSERT INTO grid_users (type) 
            VALUES ('2') ON DUPLICATE KEY UPDATE won_total=won_total+'1';");

            }
try {
                $stmt->execute();
            }
            catch(PDOException $e) {
                die($e->getMessage());
            }

虽然现在,因为它只检查了一个主键(Userid),它只是更新数据库中的第一条记录,无论$type被设置为什么。

1 个答案:

答案 0 :(得分:0)

但是,我不明白你为什么要使用insert。为什么不这样做:

update grid_users
    set won_total = won_total + 1
    where type = 1;