2017-04-22 48 views
1

我想通過我自己的管理頁面刪除我的數據庫上的一個對象。它的工作方式很簡單:當我單擊與該對象相對應的行中的刪除按鈕時,JS代碼將獲取該對象的「id」屬性並將其傳遞給PHP以執行sql刪除查詢。儘管控制檯沒有顯示任何內容,但我的代碼無法運行。你介意看看我的代碼並找出它有什麼問題嗎?我使用PHP 7.包含所有必需的庫。非常感謝你!jQuery/PHP的 - 從JS傳遞數據到PHP在數據庫上執行刪除

這裏是我的代碼:

HTML:

<table> 
    <thead> 
     <th>ID</th> 
     <th>Name</th> 
    </thead> 

    <tbody> 
     <?php 
      include("../connect.php"); 
      $sql = "select * from tbl"; 
      $query = mysqli_query($connect,$sql); 
      while($data = mysqli_fetch_assoc($query)) { 
     ?> 

     <tr> 
      <td class="data-id"> 
       <?php echo $data['id'] ?> 
      </td> 
      <td> 
       <?php echo $data['name'] ?> 
      </td> 
      <td> 
       <img src="delete.png" class="delete-button"> 
      </td> 
     </tr> 

     <?php } ?> 
    </tbody> 
</table> 

JS:

$(document).ready(function() { 
    $('.delete-button').click(function() { 
     var id = $(this).parent().siblings('.data-id').text(); 

     $.ajax({ 
      type: 'post', 
      url: 'http://localhost/myproject/delete.php', 
      data: { 
       "id":id 
      } 
     }); 
    }); 
}); 

PHP delete.php

<?php 
    include("../connect.php"); 
    if(isset($_POST["id"])) { 
     $id = $_POST["id"]; 
     $sql = "delete from tbl where id=".$id; 
     $query = mysqli_query($connect,$sql); 
    } 
?> 

PHP connect.php

<?php 
    $connect = new mysqli("localhost","root","","db"); 
    mysqli_set_charset($connect,'utf8'); 
?> 
+2

警告:你的代碼很容易受到SQL注入 –

+1

謝謝@FastSnail,但這個問題是不是現在重要。我會照顧它以後:) –

+0

你有沒有調試你的代碼嘗試打印sql查詢,看看有什麼問題'$ sql =「delete * from tbl where id =」。$ id;'; echo $ sql; '。例如,如果block可能不執行,可能是id沒有正確發送,並且是否有任何errors.check瀏覽器控制檯>網絡選項卡>單擊請求可以看到響應。 –

回答

2

您的刪除查詢語法錯誤。它應該像下面,

$sql = "delete from tbl where id=".$id; 

從查詢

更新刪除「*」:有您的代碼2個錯誤&希望這些修正可能會解決您的問題

第1期:由於您在TD中將文本發送爲id,因此它會沿着HTML中的空格發送id。所以修剪你的價值。這是您的查詢,

$sql = "delete from tbl where id=".trim($id); 

問題2:這可能是一個拼寫錯誤。 '$ connnect'變量應該是connect.php文件中的'$ connect'。

+0

我已經刪除了'*',但它仍然不工作:( –

+1

@BotherEye,我已經更新了我的答案,希望它可以幫助你解決你的問題 – manian

0

似乎$(this).parent().siblings('data-id').text();

應該$(this).parent().siblings('.data-id').text();

缺少點(。)在類名。

+0

啊......這只是輸入錯誤^^!我在我的實際代碼中有這個點:) –

0

在您的實際代碼,請``保留的MySQL的名稱

更改爲下面的代碼:

$sql = "DELETE FROM `tbl` WHERE `id`='$id'";