【问题标题】:Use a loop to look through POST variables使用循环查看 POST 变量
【发布时间】:2015-10-08 02:14:43
【问题描述】:

我正在尝试创建一个 POST 方法,该方法将从表中接收一个值(即动态生成的)。该值将等于公司名称,并且将有一个隐藏字段等于公司名称+附加的“id”。

这是我的代码:

if(isset($_POST))
{
    foreach ( $users as $balance_user ) {
        if(isset($_POST[$balance_user]))
        {
            //update user meta with new balance
            $newBalance = $_POST[$balance_user];
            $postedID = $_POST[$balance_user.'id'];
            update_user_meta($postedID, 'balance', $newBalance);
        }
    }
}

我不断收到错误isset 中的偏移类型非法或为空。我不能以这种方式传递变量吗?例如,如果一家公司名为 Acme,并且那个特别命名的输入中有一个值,我想在 POST 方法中循环遍历所有公司,如果循环的那部分等于传入变量的公司,它应该做点什么。

【问题讨论】:

  • $balance_user的值是多少?
  • $users 的价值是什么
  • 您是只收到一次错误,还是多次收到错误?
  • 网络搜索“isset 中的非法偏移类型或为空”会告诉您,您在 $_POST 中使用的键不是用作数组偏移的有效键。 $balance_user 必须是标量值。不能是数组、对象、可调用对象等。

标签: php


【解决方案1】:

添加这三行以查看数据,正如其他人所指出的那样,显然您假设 $balance_user 中的某些值不存在或不同。

echo '<pre>:';
var_dump($balance_user);
echo ':</pre>';
if(isset($_POST[$balance_user]))

pre 使阅读调试输出变得更容易。 :..: 将显示空值。

一旦你运行它,你可能会发现你在 $users 中的一个条目是空的。

输出顺序将显示空用户值在哪里。

但是:

$postedID = $_POST[$balance_user.'id'];

这也可能是错误来源,是否有帖子值。比如说,$balance_user == 弗雷德

fredid

如果没有,您当然会立即收到该错误。你没有给出错误的行号,所以我不知道是哪一个,行号会立即显示出来。

【讨论】:

  • 这是如何调试的建议,而不是答案!
  • 我不同意,不调试就无法回答这个问题,调试器输出会立即给出答案。海报的代码中有一个关于存在的值的假设,这些值不存在调试将暴露。此外,很可能实际上是第二项,即在 post 键后附加 'id' 导致了问题,尽管没有足够的信息可以确定。由于用户显然没有对此进行调试,因此假设他们不知道如何调试它。
  • 你自己写的,不调试是无法回答的。没错,但这不是答案。这是一条评论
  • 不要争论,而是展示如何调试以获得答案是假设调试器数据揭示了错误的答案。此外,评论框不适合发布代码块。无法调试是问题的原因,ergo,显示如何调试实际上是真正的答案。只有发帖人才能看到这个答案,因为只有发帖人有 $user 数据,知道完整的帖子字段,并且可以看到在上面运行调试器的结果。
  • 你们在循环,评论框不支持足够的代码格式。您会注意到,除了我的,这里没有答案,因为答案是通过调试创建的,而调试是这种情况下的解决方案。其他来寻求“答案”的人将看到调试数据,应用它并找到他们的解决方案。这是在stackoverflow上提供“答案”的目的,以提供有关如何解决问题的解决方案。如果在没有调试数据的情况下有可能的“解决方案”,它就会出现,调试是答案的核心工具。
猜你喜欢
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 2022-11-04
  • 2014-11-11
  • 2013-12-03
相关资源
最近更新 更多