首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择插入,如果不存在,则添加或更新

问选择插入,如果不存在,则添加或更新
EN

Stack Overflow用户
提问于 2014-09-13 01:05:41
回答 1查看 63关注 0票数 0

我正在尝试记录在我的网站上发生的搜索。当有人搜索什么东西时,我想首先检查数据库,如果它以前被搜索过。如果它有添加+1计数的搜索次数,如果它还没有提交到数据库。

我现在遇到的问题是,每当你搜索时,它都会更新所有记录的搜索词。我猜是因为我还没有设置id。如何在第一个select查询中获得搜索词的id,并在第二个查询中将该id作为变量传递,以便它只更新与该id关联的搜索词?

代码语言:javascript
复制
$result = mysql_query("SELECT * FROM wss_search WHERE searchterm ='$trimmed' ");

if( mysql_num_rows($result) > 0) {
mysql_query("UPDATE wss_search SET  count = count+1 WHERE searchterm = '$trimmed' ");
}
else
{
mysql_query("INSERT INTO wss_search (id, searchterm, count) VALUES ('NULL', '$trimmed', '1') ");
}

非常感谢您的帮助。

我也意识到我应该使用mysqli,但是其余的软件还没有更新到mysqli。

EN

回答 1

Stack Overflow用户

发布于 2014-09-13 01:55:50

我已经用下面的代码让它工作了。我是php的新手,你能告诉我为什么它不安全吗?我需要做些什么来保证它的安全?

代码语言:javascript
复制
$var = $_GET['q'] ;
$trimmed = mysql_secure($var);

$result = mysql_query("SELECT id FROM wss_search WHERE searchterm ='$trimmed' ");

while($row = mysql_fetch_array($result)) {

    $id = $row['id'];
}

if( mysql_num_rows($result) > 0) {
mysql_query("UPDATE wss_search SET  count = count+1 WHERE id = '$id' and searchterm = '$trimmed' ");
}
else
{
mysql_query("INSERT INTO wss_search (id, searchterm, count) VALUES ('NULL', '$trimmed', '1') ");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25813350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档