获取警告\uPHP/jquery脚本中为foreach提供的参数无效

获取警告\uPHP/jquery脚本中为foreach提供的参数无效,php,jquery,mysql,warnings,Php,Jquery,Mysql,Warnings,你好,明智的stackoverflow用户 我目前正在用PHP开发一个私有消息传递系统,我一直在做一个删除多条选定消息的函数。就目前而言,它正在工作,但我得到警告: Warning: Invalid argument supplied for foreach() in /var/www/PM/delete.php on line 7 我使用jquery将数据发送到另一个名为delete.php的php文件。 首先,我的复选框如下所示: <input type="checkbox" cla

你好,明智的stackoverflow用户

我目前正在用PHP开发一个私有消息传递系统,我一直在做一个删除多条选定消息的函数。就目前而言,它正在工作,但我得到警告:

Warning: Invalid argument supplied for foreach() in /var/www/PM/delete.php on line 7
我使用jquery将数据发送到另一个名为delete.php的php文件。

首先,我的复选框如下所示:

<input type="checkbox" class="message_checkbox" name="pms[]" value="<? echo $loadData['id']; ?>" id="<? echo $loadData['id']; ?>">

您的选择器错误
$(“输入[@name='pms[]']:已选中”)
您可能没有考虑xpath的
@name
属性。它应该是
$(“input[name='pms[]']:checked”)


因此,您在这里传递一个空数组
data:{id:message},
,它不会将
id
参数添加到post请求中,因此
$\u post[“id”]
将为空。

您必须在post变量中将其作为json字符串传递,然后在服务器端进行json解码

 this is the correct way to push an value inside an json object array
 message.push({id: $(this).val()});

 pass it as string in the post
 data: 'message='+JSON.stringify(message),

请不要使用
mysql.*
函数来编写新代码。它们不再得到维护,社区已经开始。看到了吗?相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果选择PDO,.提供给foreach的无效参数意味着
$rows2del
不是数组或可迭代对象。尝试
var\u转储($rows2del)
并查看值是什么。是否确定$rows2del实际上是一个数组?您可能需要记录一些类似print\u r($\u POST)的内容,以查看其中的内容。如果您只将一个项目发布到PHP,它可能会将您发布到该项目上的任何内容视为一个参数,这与您的Javascript无关。错误消息指向您的PHP foreach语句。。。此脚本在编写时容易受到SQL注入的攻击,准备好的语句可以修复此问题。Mysql_*()函数也不推荐使用!谢谢你的回答,我想我的数组仍然是空的,因为当我使用var_dump($rows2del);,它会为NULL;。即使我移除了@。有没有关于它为什么为空的建议?至少需要选中其中一个复选框,以查看
$\u POST[“id”]
中是否有值。
<?php ob_start();
include("../config.php");

$rows2del = $_POST["id"];

foreach($rows2del as $id) /* Line 7*/
{
        mysql_query("UPDATE user_pm SET reciev_deleted = '1' WHERE id = '$id'") or die(mysql_error());
}   
?>
 this is the correct way to push an value inside an json object array
 message.push({id: $(this).val()});

 pass it as string in the post
 data: 'message='+JSON.stringify(message),