SQL调用IF EXISTS

时间:2014-07-02 04:56:40

标签: php sql if-statement insert sql-update

SOS!我正在尝试构建一个简单的搜索功能,该功能可以使用搜索内容创建新行,或者如果该行已存在则增加搜索特定内容的次数。我尝试在phpMyAdmin内部进行类似的SQL调用,但它给了我一个#1064错误? ($ _POST ['搜索']是搜索内容)

<?php
  $con=mysqli_connect(...);
        $result = mysqli_query($con,"IF EXISTS (SELECT * FROM search WHERE text='" . $_POST['search'] . "') 
        UPDATE search SET searches=searches+1 WHERE text='" . $_POST['search'] . "' 
        ELSE 
        INSERT INTO search (text, searches) VALUES ('" . $_POST['search'] . "', '1')");
  echo $result;
?>

2 个答案:

答案 0 :(得分:1)

制作&#34;文字&#34; &#34;搜索&#34;的列表a&#34;唯一键&#34;。然后您可以使用此查询:

INSERT INTO搜索(文本,搜索)VALUES({$ searching_text},1)   ON DUPLICATE KEY UPDATE搜索=搜索+ 1;

答案 1 :(得分:0)

首先,你在sql中做了非常错误的事情。 请为了您的应用,永远不要让未经过滤的输入进入您的SQL查询。这可能会导致SQL注入,并且有人可以轻松地劫持您的数据库。

所以,我们先解决这个问题:

$search = mysql_real_escape_string($_POST['search']);

现在,当我们修复它时,让我们尝试用它做点什么。 我不知道你是否为该表设置了密钥,但我认为你这样做了,所以为了逃避你的条件尝试,只需做下一件事:

insert into search (searches) values($search) on duplicate key update searches=searches+1

请让我知道它是怎么回事。

亲切的问候 维拉德