2017-04-03 30 views
0

我無法使用數組來使sql查詢一次刪除多行數據。請忽略我現在正在使用sql注入。如何使用PHP中的ID數組刪除多行mysql

編輯:一個更好的解釋 - 我的PHP不工作。我有所修改它,檢查中給予

注意鏈接塞巴斯蒂安後:我使用AngularJS發佈

這是我的$的數據結構,從我controller.js功能。 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側陣列上有所有要刪除的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); 
+5

您應該避免使用循環中的SQL,不惜任何代價。要解決你的WHERE IN問題,請看看這裏:[http://stackoverflow.com/questions/2373562/pdo-with-where-in-queries] – Sebastian

+0

你有什麼困難?你應該使用'.then'來代替'success'和'error' – Akashii

+1

如果這是你的工作功能......你真正的問題是什麼......? .. 沒有結果 ?錯誤的結果? ..explain better .. – scaisEdge

回答

0

這裏的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); 
相關問題