簡體   English   中英

如何使用PHP中的ID數組從mysql表中刪除多行

[英]How to remove multiple rows from mysql table, using an array of IDs in PHP

我在使用數組使sql查詢一次刪除多行數據時遇到麻煩。 請忽略我現在正在使用sql注入。

編輯:更好的解釋-我的php根本不起作用。 在檢查評論中提供的鏈接塞巴斯蒂安之后,我已經對其進行了一些編輯

注意:我正在使用AngularJS發布

這是我的controller.js函數中的$ data結構。 devicesToDelete只是一個簡單的數組,例如[“ 1”,“ 2”,“ 3”]:

$http.post('./js/removeMultiple.php', { 'devicesToDeleteArray': devicesToDelete })
     .success(function(data) {
          $scope.results = data;
          devicesToDelete = [];
     })
     .error(function(err) {
         $log.error(err);
     })

這是更新的PHP代碼,我遇到了麻煩。 在單擊我的deleteMultiple按鈕時,僅會觸發確認警報,不會刪除所選項目,並且控制台中沒有錯誤:

<?php

$data = json_decode(file_get_contents("php://input"));

include('config.php');

$sql = "DELETE FROM devices WHERE devID in ( implode(",", $data) )";

$qry = $conn->query($sql);

$sql = "SELECT * FROM devices";

$qry = $conn->query($sql);

$data = array();

if($qry->num_rows > 0){
    while($row = $qry->fetch_object()){
        $data[] = $row;
    }
}else {
    $data[] = null;
}




$conn->close();

echo json_encode($data);

編輯2:我設法自己解決了這個問題。 解決方法如下:

我在JavaScript端的數組上使用了.join(),所有要刪除的ID都用逗號分隔(例如1、2、3):

$http.post('./js/removeMultiple.php', { 'devicesToDeleteArray': devicesToDelete.join(", ") })
                    .success(function(data) {
                        $scope.results = data;
                        devicesToDelete = [];
                    })
                    .error(function(err) {
                        $log.error(err);
                    })

然后我只添加了我在php代碼中完全瀏覽過的內容,這就是我要傳遞給它的數組的名稱devicesToDeleteArray

<?php

$data = json_decode(file_get_contents("php://input"));

include('config.php');

$sql = "DELETE FROM devices WHERE devID in ($data->devicesToDeleteArray)";

$qry = $conn->query($sql);

$sql = "SELECT * FROM devices";

$qry = $conn->query($sql);

$data = array();

if($qry->num_rows > 0){
    while($row = $qry->fetch_object()){
        $data[] = $row;
    }
}else {
    $data[] = null;
}

$conn->close();

echo json_encode($data);

這是PHP代碼:

<?php
$ids = $_POST['devicesToDeleteArray'];
if(!is_array($data)) {
   $ids = json_decode($data, true);
}
if(!empty($ids)) {
include 'config.php';

$sql  = "DELETE FROM devices WHERE devID in (implode(",", $ids))";
$qry  = $conn->query($sql);
$sql  = "SELECT * FROM devices";
$qry  = $conn->query($sql);
$data = array();
if ($qry->num_rows > 0) {
    while ($row = $qry->fetch_object()) {
        $data[] = $row;
    }
} else {
    $data[] = null;
}
$conn->close();
echo json_encode($data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM