【发布时间】:2020-04-23 10:11:15
【问题描述】:
我正在尝试在我的网站上创建一个非常基本的跟踪系统,只记录在场人数。
很遗憾,下面的代码不起作用。我检查了我的服务器中的错误日志,基本上这是问题所在:第一次执行后没有找到实体,即使已经有一个具有该值的条目,所以代码直接进入“else”然后崩溃,因为已经有一个具有该主键的条目。有人可以帮我找出为什么在第一次执行时找不到实体吗?
代码如下:
$q = "SELECT date, amount FROM tracking WHERE date = ?";
$req = $bdd->prepare($q);
$req->execute(date("Y-m-d"));
$results = $req->fetchAll();
if (count($results) != 0){
$results["amount"] = $results["amount"] + 1;
$track = $bdd->prepare("UPDATE tracking SET amount = ? WHERE DATE(date) = ?");
$track->execute(array($results["amount"], date("Y-m-d")));
exit;
}
else{
$q = 'INSERT INTO tracking (date, amount) VALUES (:val1, :val2)';
$req = $bdd->prepare($q);
$req->execute(
[
"val1" => date(Y-m-d),
"val2" => 1,
]
);
}
谢谢
【问题讨论】:
-
可能值得一看
INSERT... ON DUPLICATE KEY UPDATE...(stackoverflow.com/questions/7618056/…) 以节省必须先检查的时间。