【发布时间】:2017-08-27 21:42:58
【问题描述】:
我在使用数组进行 sql 查询一次删除多行数据时遇到问题。请忽略我现在正在使用sql注入。
编辑:更好的解释 - 我的 php 根本不起作用。在检查了 cmets 中提供的 Sebastian 链接之后,我对其进行了一些编辑
注意:我正在使用 AngularJS 发帖
这是我的 $data 结构,来自我的 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);
【问题讨论】:
-
您应该不惜一切代价避免 SQL 循环。要解决您的 WHERE IN 问题,请查看此处:[stackoverflow.com/questions/2373562/pdo-with-where-in-queries]
-
你有什么问题?你应该使用
.then而不是success和error -
如果这是你的工作职能......你真正的问题是什么......? .. 没有结果 ?结果错误? ..解释得更好..
-
$data默认是一个对象。澄清$data结构。 -
无法理解
str_repeat那里。$data = array_map('intval', $data); $ids = implode(',', $data);
标签: javascript php mysql angularjs arrays