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);
您應該避免使用循環中的SQL,不惜任何代價。要解決你的WHERE IN問題,請看看這裏:[http://stackoverflow.com/questions/2373562/pdo-with-where-in-queries] – Sebastian
你有什麼困難?你應該使用'.then'來代替'success'和'error' – Akashii
如果這是你的工作功能......你真正的問題是什麼......? .. 沒有結果 ?錯誤的結果? ..explain better .. – scaisEdge