我的数据库中有这个表:
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
被设置为什么。
答案 0 :(得分:0)
但是,我不明白你为什么要使用insert
。为什么不这样做:
update grid_users
set won_total = won_total + 1
where type = 1;