Php 为什么我的代码运行时会得到一个未定义的变量?

Php 为什么我的代码运行时会得到一个未定义的变量?,php,html,Php,Html,我正在使用PhP来呈现一个动态网页,其中包含一个电子邮件地址并将其存储在数据库中。如果出现错误并且页面被重新加载,我会使用双美元符号来维护该值,但是当我运行代码时,它会说这是一个未定义的变量 以下是我的代码的相关小节: <?php $email = isset($_POST["email"]) ? $_POST[ "email" ] : ""; $iserror = false; $formerror = false; if ( isset( $_POST["submit"] ) ) {

我正在使用PhP来呈现一个动态网页,其中包含一个电子邮件地址并将其存储在数据库中。如果出现错误并且页面被重新加载,我会使用双美元符号来维护该值,但是当我运行代码时,它会说这是一个未定义的变量

以下是我的代码的相关小节:

<?php
$email = isset($_POST["email"]) ? $_POST[ "email" ] : "";
$iserror = false;
$formerror = false;
if ( isset( $_POST["submit"] ) )
{
if($email == ""){
    $iserror = true;
    $formerror = true;
}

if(!$iserror)
{
    $query = "INSERT INTO email (Address) values ('$email')";

if ( !( $database = mysql_connect( "localhost", 
              "iw3htp", "password" ) ) )
              die( "<p>Could not connect to database</p>" );

           // open Mailer database
           if ( !mysql_select_db( "Mailer", $database ) )
              die( "<p>Could not open Mailer database</p>" );

           // execute query in Mailer database
           if ( !( $result = mysql_query( $query, $database ) ) ) 
           {
              print( "<p>Could not execute query!</p>" );
              die( mysql_error() );
           } // end if

           mysql_close( $database );

           print( "<p>Hi! Your e-mail $email has been added to our mailing list.</p>
              </body></html>" );
           die();
}
}

if ( $iserror )                                              
 {                                                            
        print( "<p class = 'error'>Fields with * need to be filled 
           in properly.</p>" );
  }

print("<form method='post' action='mail.php'><label>Join our mailing list</label>     <br>");
print("<input type='text' name='$email' value='" . $$email ."'>");
if($formerror == true)
{
print( "<span class = 'error'>*</span>" );
}

print("<input type='submit' name='submit' value='Join list' /></form></body></html>");

?>

您的错误是由双美元符号引起的。。。有关变量的更多了解,请参阅

<?php
$a = 'hello';
$$a = 'world';

echo "$a ${$a}"; // outputs hello world
echo "$a $hello"; // outputs hello world But see the (dynamic) variable variable $hello
?>

试试这个


哪个变量未定义?将
$$email
更改为
$email
“如果出现错误并且页面被重新加载,我使用双美元符号来保持该值”——这不是
$
所表示的。若要在页面加载期间保留该值,您需要将其存储在
$\u会话中
。假设
$email
的发布值为'user@host.com,实际上您正在尝试访问一个变量,如
$user@host.com
这显然是未定义和无效的。你在哪里读到的
$
使其成为一个变量,其中变量
$email
的内容表示一个变量的名称,而这个变量根本不是您想要的。由于您只需打印一个新表单
,因此您甚至不需要
$\u SESSION
——您只需打印
$电子邮件即可。
<?php
$email = isset($_POST["email"]) ? $_POST[ "email" ] : "";
$iserror = false;
$formerror = false;
if ( isset( $_POST["submit"] ) ) {
    if($email == ""){
        $iserror = true;
        $formerror = true;
    }
    $connect = mysql_connect( "localhost","iw3htp", "password" );
    mysql_select_db( "Mailer" ); 
    if(!$iserror) {
        $query = "INSERT INTO email(Address) values ('".$email."')";
        $result = mysql_query( $query ); 
        if($result != '') {
           print( "<p>Hi! Your e-mail ".$email." has been added to our mailing list.</p></body></html>" );
        }else{
            print( "<p>Could not execute query!</p>" );
        }
        mysql_close( $conncet );
    }
}

if ( $iserror ){                                                            
   print( "<p class = 'error'>Fields with * need to be filled in properly.</p>" );
}

print("<form method='post' action='mail.php'><label>Join our mailing list</label>     <br>");
print("<input type='text' name='email' value='" . $email ."'>");
if($formerror == true)
{
print( "<span class = 'error'>*</span>" );
}

print("<input type='submit' name='submit' value='Join list' /></form></body></html>");

?>