我正在尝试根据选中的复选框删除多行,我将每个复选框的值传递给php
页面上的ajax请求我正在使用implode
来获取个人ID但是我是得到工作
Warning: Invalid argument supplied for foreach()
。
有人可以帮帮我吗?
JS
$('.delete').on('click', function() {
var val = [];
$(':checkbox:checked').each(function(i){
val[i] = $(this).val();
});
$.ajax({
type: "POST",
url: "delete.php",
data: {dtar: 'dms', mxd: val},
cache: false,
success: function(response)
{
$("#print").html(response);
}
});
});
PHP
if(isset($_POST["dtar"]) && $_POST["dtar"] == 'dms'){
$id = $_POST['mxd'];
$ms_id = implode(",", $id);
if(!empty($id)){
$stmt = $db->prepare(".....");
$stmt->bind_param(...);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()){
foreach ($ms_id as $id) {
//do something
}
}
}
答案 0 :(得分:0)
既然你已经这样做了..
$ms_id = implode(",", $id);
您的$ms_id
现在是一个字符串,您正在执行此操作
foreach ($ms_id as $id) {
..你不能循环一个字符串,这就是这个问题背后的原因。
循环遍历$id
变量,因为它是一个数组..
foreach ($id as $idvalue ) {
//do something
}
答案 1 :(得分:0)
1)检查$ ms_id是一个数组
if (is_array($ms_id )) {
foreach ($ms_id as $id) {
//do something
}
}
2)while($ row $ result-> fetch_assoc()){//我想你在$ row之后缺少'='符号
3)据我所知,现在PDO中的fetch_assoc()函数 代替
$result = $stmt->get_result();
while($row $result->fetch_assoc()){
只需使用$ result = $ stmt-> fetchAll(PDO :: FETCH_ASSOC)
答案 2 :(得分:0)
您正在使用implode()
在字符串中转换数组,因此请使用is_array()
对数组进行检查,然后您的错误条件
if(isset($_POST["dtar"]) && $_POST["dtar"] == 'dms'){
$id = $_POST['mxd'];
// $ms_id = implode(",", $id);
if(!empty($id)){
$stmt = $db->prepare(".....");
$stmt->bind_param(...);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()){
if(is_array($id)) {
foreach ($id as $mid) {
//do something
}
}
}
}