【问题标题】:PHP echo values outside conditional if条件外部的 PHP 回显值 if
【发布时间】:2014-02-06 07:14:09
【问题描述】:

我有以下 PHP 代码:

    <?php
    //Connection to PDO Database
    ?>

    <form method="post" action="">
    <p>Busisness telephone 1</p><input id="business_telephone_01" name="business_telephone_01" tabindex="auto" value="<?php echo $result['business_telephone_01']; ?>" type="text" />
    <input name="submit" type="submit" value="Save Changes"></form>

    <?php
    //Get from Form

    if((empty($_POST['submit']) === false)){
    $business_telephone_01 = $_POST['business_telephone_01'];
//Formating of telephone numbers
$message = 'This message I want to display';
echo 'This is another message';
      }

echo $message;
    //Code to update table through PDO
?>

无论我在哪里回显,它是 echo 'This is another message'; 在条件括号内还是 _ echo $message;_ 在括号外没有回显,也没有错误正在显示。

html 表单和 PDO 工作正常并且正在更新,但没有任何响应。错误日志中没有显示错误。

更新:

  • 如果我使用 if((empty($_POST['submit']) === false)){ 我会得到 PHP 注意:未定义变量:hello
  • 如果我使用 if (isset($_POST['submit'])) { 我会收到 PHP 通知: 未定义变量:你好
  • 如果我使用if (!isset($_POST['submit'])) {,它会给我一个我使用的未定义变量的列表,例如从 我在business_telephone_01上面的代码

我的完整代码

if((empty($_POST['submit']) === false)){
//Get from Form
        $address_building_name = $_POST['address_building_name'];
        $address_building_number = $_POST['address_building_number'];
        $address_street = $_POST['address_street'];
        $address_locality = $_POST['address_locality'];
        $address_postcode = $_POST['address_postcode'];
        $address_country = $_POST['address_country'];

//Formating of address
        $address_building_number = strtoupper($address_building_number);
        $address_building_number = str_replace(' ','',$address_building_number);
        $address_building_name = ucwords($address_building_name);
        $address_street = ucwords($address_street);
        $address_locality = ucwords($address_locality);
        $address_postcode = strtoupper($address_postcode);
        $address_country = ucwords($address_country);

        echo 'Hello';
        $good = 'Good bye';

    } 
    echo $good;

【问题讨论】:

  • 为什么不简单地使用 if($_POST['submit']){?另外,提交时有错误吗?
  • @dwhite.me '因为如果$_POST['submit'] 不存在,它会发出警告。
  • 不一定,您可以关闭这些消息。那么你应该使用 isset($_POST['submit']) 。
  • 当我写这篇文章的时候,@leng 的回答完全符合我的意思。

标签: php pdo


【解决方案1】:

我愿意打赌$message 不会被回显,因为它从未被初始化。 (应该初始化的 if 块没有被执行,因为条件失败。)

首先,您应该使用isset 来确定是否已提交 POST 变量:

if (isset($_POST['submit'])) {

或者,看看它是否没有被提交:

if (!isset($_POST['submit'])) {

其次,您应该在您的程序上启用错误报告,并让我们知道您遇到了哪些错误(如果有):

error_reporting(E_ALL);
ini_set("display_errors", 1);

您可以将这两行添加到脚本的最顶部,就在开头的 &lt;?php 行之后,这应该有助于了解情况。

【讨论】:

  • 您在第一行代码中缺少结束 )
  • @Leng 首先感谢您的帮助,但我尝试了您的方法但出现错误,请查看我的问题的更新。
  • @user 然后摆脱错误 - 处理未定义的 hello 变量。或者如果您迷路了,请向我们展示您的代码。
  • @Leng 我在上面的问题中更新了我的代码 - 我目前正在尝试上面的代码。回声没有显示。我收到以下错误 Undefined variable: good
  • @user Dude - 你还在使用荒谬的if 条件,所以在你修复它之前你永远不会执行那个块。
【解决方案2】:

问题可能是 $message 变量从未在您的 if 语句中设置。 如果 'if' 条件不匹配,则永远不会设置 $message,您将无法回显该值。

要进行测试,您可以在开始 if 语句之前将 $message 变量设置为某个值。

$message = 'condition failed';
if(isset($_POST['submit'])){
....
$message = 'This message I want to display';
}
echo $message;

如果满足条件,它将回显“我要显示此消息”。 如果条件失败,它会回显'条件失败';

一个快速的脏测试,但它会告诉你 $message 变量是否会在你的 'if' 语句中被初始化。

【讨论】:

  • 感谢您的提示。我要使用它:-)
猜你喜欢
  • 2019-07-03
  • 2017-05-23
  • 1970-01-01
  • 2022-12-11
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
相关资源
最近更新 更多