[英]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.