我在使用数组进行 SQL 查询一次删除多行数据时遇到问题。请忽略我现在正在使用 sql 注入(inject)。
编辑:一个更好的解释 - 我的 php 根本不起作用。在检查了评论中塞巴斯蒂安提供的链接后,我对其进行了一些编辑
注意:我使用 AngularJS 来发布
这是我的 $data 结构,来 self 的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 端的数组上使用了 .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);
关于javascript - 如何使用 PHP 中的 ID 数组从 mysql 表中删除多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43177602/