如何更新sql db

时间:2016-07-07 14:11:38

标签: php mysql

我正在使用自制搜索引擎制作网站,我想将人们的搜索字符($ search)放入数据库中。如果$ search已经在数据库中,我希望相应的数字(表中的Aantal列)在何时上升。 我成功地在表中添加了一个新的searchterm,但没有更新已经存在的那个。它只是创建一个Aantal = 1的新条目。 这是我的代码,searchterms是db和table的名称,Zoekterm是searchterms的列名称:

抱歉我的英语不好: - )

if ($search != null) {
        $conn = new mysqli($servername, $username, $password, $dbname);
    if ("SELECT * FROM searchterms WHERE Zoekterm = '{$search}'"){
            $inserts = "INSERT into searchterms values('". $search . "', '" . 1 . "')";
            if ($conn->query($inserts) === FALSE) {
               echo "Error: " . $inserts . "</ br>" . $conn->error;
        }
    }
    elseif (!"SELECT * FROM searchterms WHERE Zoekterm = '{$search}'") {
        $i = mysqli_query($conn, "SELECT Aantal FROM searchterms WHERE Zoekterm = '{$search}'"); 
        $j = mysqli_fetch_row($i);
        foreach ($j as $k) {
            $k++;
            echo "<p>$k</p>";
        }
        $sql = "UPDATE searchterms SET Aantal='$k' WHERE Zoekterm = '$search'";
    }
    $conn->close();
}

1 个答案:

答案 0 :(得分:1)

这是完全错误的:

if ("SELECT * FROM searchterms WHERE Zoekterm = '{$search}'"){

if("string")将始终评估为true - 这些不是查询。它们的字符串碰巧包含一些 LOOK 的字符,就像sql一样。在将text / sql发送到数据库并执行它之前,该文本/ sql不会成为查询。

最重要的是,你很容易受到sql injection attacks

的攻击