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