php为每个给出无效参数错误

时间:2014-04-12 06:28:34

标签: php jquery implode

我正在尝试根据选中的复选框删除多行,我将每个复选框的值传递给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
    }
    }
    }

3 个答案:

答案 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
           }
        }
       }
     }