gpt4 book ai didi

如果 CURDATE() 匹配,则 PHP/MYSQL 在重复键更新时插入,否则创建新条目

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:15 26 4
gpt4 key购买 nike

我在用 mysql 和 php 编写程序时遇到了问题...看到我想将我的搜索查询保存到数据库中,,看这个例子

Stackoverflow 搜索 = > 20 次日期 = > 2013-04-26

Stackoverflow 搜索 = > 10 次日期 = > 2013-04-27

Stackoverflow 搜索 = > 50 次日期 = > 2013-04-28

格式无关紧要..实际上我想在日期更改时保存我的搜索查询..如果日期匹配,那么应该更新时间 + 1

看这段代码,,

<?php

$keyword = null;
$date = null;

if (!empty($_GET['s'])) {


$keyword = stripslashes($_GET['s']);

$date = date("Y-m-d");

try {

$objDb = new PDO('mysql:dbname=search;charset=UTF-8', 'root', '');

$check = "SELECT *
FROM `search1`
WHERE `keyword` = '$keyword%'
AND `date` = CURDATE() ";

if (!empty($check))
{
$sql ="UPDATE `search1`
SET `times` = `times` + 1
WHERE `keyword` = '$keyword%'
AND `date` = CURDATE()";
}
else
{
$sql = "INSERT INTO `search1` (`keyword`, `date`) VALUES (:keyword, :date)";
$statement = $objDb->prepare($sql);
$statement->execute(array(':keyword' => $keyword, ':date' => $date));

}

} catch(PDOException $e) {
echo $e->getMessage();
}


}
?>

它不工作.. 出了点问题.. 谁能告诉我哪里出了问题。我不能使用主键。

最佳答案

可以在字段日期和关键字上设置唯一索引

ALTER TABLE  `search1` ADD UNIQUE (
`keyword` ,
`date`
);

编辑:看起来 OP 现在已经知道了,但只是为了完整起见,上面的查询你只运行一次以向表添加一个唯一索引 - 请注意,如果你有相同的行,它就不会工作关键字和日期的值;如果您收到“重复值”错误,您必须删除行,直到值是唯一的,然后再重试。

然后查询

INSERT INTO `search1` (`keyword`, `date`, `times`) VALUES (:keyword, :date, 1) ON DUPLICATE KEY UPDATE `times` = `times` + 1

应该可以解决这个问题 :)

关于如果 CURDATE() 匹配,则 PHP/MYSQL 在重复键更新时插入,否则创建新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241262/

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