2016-07-07 142 views
1

我正在使用自制的搜索引擎的网站,我想把人的searchterms($搜索)在数据库中。如果$ search已经在数据库中,我希望相应的数字(表格中的Aantal列)在何时上升。 我成功地在表中添加了一个新的searchterm,但没有更新已经在其中的一个。它只是使得Aantal = 1的新条目。 这里是我的代码,searchterms是数据库和表的名称,Zoekterm是列的名称是在searchterms去:如何更新一个SQL数据库

对不起,我的英文不好:-)

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

这是完全错误的:

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

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

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

+0

能否请您解释我是如何解决这个不是? – DagelijksGamer

+0

执行这些查询。你已经在使用插入,所以我不知道为什么你认为你可以将SQL转储到一个字符串,并没有任何调用 - “exec()或 - > query() –

+0

魔术般显示结果所以我已添加$ conn-> exec($ sql);就在我声明$ sql的行的下面,但它仍然不起作用......我还有很多东西需要学习 – DagelijksGamer