【问题标题】:PHP Post Always Returns 1PHP Post 总是返回 1
【发布时间】:2016-02-25 12:35:14
【问题描述】:

我正在尝试使用 PHP 更新 mySQL 数据库。我在 index.php 上得到了表格。我正在使用 GET 方法从链接中获取 id 的值,并尝试将值传输到隐藏输入的另一个页面。

当我尝试在另一个页面上读取此值时,它总是返回 1。 这是我的代码 Index.php

<?php
    $usr = $_GET['id'];
    echo $usr ; 
?>
<form method="post" action="status.php">
    <input type="text" name="number"> <br>
    <input type="hidden" name="3" value="<?php echo (isset($usr)) ?  $usr : '' ?>" />
    <input type="submit">
</form>

这里是status.php

$hello=isset($_POST['3']);
echo $hello ;
echo "<br>";

总是 1。

【问题讨论】:

  • isset() 返回布尔值 true 或 false,因此 $hello 将是布尔值.....布尔值 true 显示为 1,布尔值 false 根本不显示如果你回应它
  • $hello = isset($_POST['3'])? $_POST['3'] : 'no value posted'; 打印出实际的POST 值,无论是否设置。
  • Giray 请检查答案并标记和投票给您更正确和更具描述性的答案。它会帮助别人。谢谢。
  • 我更改了我的代码,但这次它没有返回任何内容。

标签: php mysql post get sql-update


【解决方案1】:

isset() return bool 所以如果变量可用 $hello=1 否则 $hello=NULL
将 POST 写为

if(isset($_POST['3']))
{
   $hello=$_POST['3'];
   echo $hello;
} 

【讨论】:

  • 感谢您提供信息。我更改了代码,但这次没有返回任何内容。
  • 尝试在 else 中回显一些东西
  • 试过回显“成功”;它运作良好,但 echo $hello 什么也不返回。
  • 试试 print_r($_POST);检查 $_POST 中的内容
  • 数组 ([number] => 3 [hidden] => ) 成功
【解决方案2】:

您将使用isset() 函数来分配不应该出现的变量:

$hello = isset($_POST['3']);

如果设置了$_POST['3'],这将返回true

从字面意思来看,isset() 表示变量已设置。它是一个BOOL 函数,这意味着它只能在设置时返回true,在未设置/为空时返回false

因此,您的代码应该是:

$hello = $_POST['3'];

更多关于isset()的信息:http://php.net/manual/en/function.isset.php

提示:将值放在隐藏的文本框中然后使用$_GET 获取它实际上不是一个好主意,因为大多数人都可以在浏览器中编辑该值。

【讨论】:

    【解决方案3】:

    它总是返回“1”,因为:

    $hello=isset($_POST['3']);
    

    函数isset()返回1如果值被设置,0如果没有设置。在二进制中,1 表示“真”,0 表示“假”

    基本上,您的代码表明$_POST['3'] 存在。

    但是,可能存在更大的潜在问题:$_POSTarray,因此使用数字作为 input name 可能被认为是不好的做法。尝试使用使用字母的名称,例如:

        <input type="hidden" name="hidden_user"/>
    

    【讨论】:

    • 我改成了这个 但是这次它没有返回任何东西。它是空的。
    • 也改变这个。 $hello=isset($_POST['hidden_​​']);回声$你好;回声“
      ”;
    • 我已经改成这个并且它现在可以工作了。
    【解决方案4】:

    我认为你使用 isset 错误。

    这个函数,isset,不是去获取某个东西的值,而只是检查这个东西是否被定义了。

    试试这个:

    $hello=$_POST['3'];
    

    【讨论】:

      【解决方案5】:

      在 status.php 中获取 post 参数的正确方法是:

      $hello = isset($_POST[3]) ? $_POST[3] : null;
      echo $hello;
      

      【讨论】:

        猜你喜欢
        • 2011-12-16
        • 2018-05-13
        • 1970-01-01
        • 2017-01-25
        • 2016-11-21
        • 2019-10-10
        • 2014-04-13
        • 2017-03-20
        • 2013-11-04
        相关资源
        最近更新 更多