如何修复“PHP警告:传递给每个()的变量不是数组或对象”?

时间:2013-01-13 05:49:39

标签: php mysql

我正在使用phpInv

<{3>} http://alex.piechowski.org/inventory。登录名=管理员/ phpinv

我不断收到“PHP警告:传递给每个()的变量不是数组或对象”

在entry_new.php的第38行

if ($itemid>0) {
            --> while (list ($colid, $property) = each ($col)) { <--
                    $result = $DB->query("INSERT INTO ".$DB->tableprefix."property (itemid,colid,property) VALUES ('".str_prepare($itemid)."','".str_prepare($colid)."','".str_prepare($property)."')");
                    if (!$result) {
                        $errortext = "Error: property not created\n";
                        eval("\$table = \"".templateget('error')."\";");
                    }
                }

请有人愿意提单和帮助我吗?我一直在工作几个小时,我似乎无法让它工作......

它正在接收一个已发布的数组。

2 个答案:

答案 0 :(得分:2)

如果您尝试使用尚未初始化的变量,则会收到相同的警告

确保您尝试传递的变量($ col)存在且先不为null。您还应该确保没有拼错变量名称。

你应该尝试使用函数is_array($ col)来确保传递的变量确实是一个数组。

答案 1 :(得分:0)

我最近遇到了同样的问题。

我从一段时间前下载了一些来源,最终成了我的浏览器。

在所有输入都在之前,我的浏览器会自动关闭表单。

如果您使用的是Chrome,请尝试更改为Internet Explorer。

如果更改浏览器不起作用,请确保您获得所需的数据。

您可以使用以下方式检查所有发布的值:

if ($_POST) {
    echo '<pre>';
    echo htmlspecialchars(print_r($_POST, true));
    echo '</pre>';
}