2016-07-07 138 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