Php 注意:未定义变量:在第51行

Php 注意:未定义变量:在第51行,php,Php,我对PHP和自学很陌生,所以我知道我会有一些错误,有人能帮我弄清楚为什么会出现这个错误吗?我相信我已经定义了变量 这是我的代码(对不起,我不知道是否可以附加,所以我只是粘贴) 如果我计数正确,那么问题似乎就在这条线上 “$result=mysql_query($query,$connection);”? 我在任何地方都看不到$connection的值。对我来说,问题出在这里: $query=“选择* 来自用户 其中username='$username'; 因为如果表单是$\u POST['cm

我对PHP和自学很陌生,所以我知道我会有一些错误,有人能帮我弄清楚为什么会出现这个错误吗?我相信我已经定义了变量

这是我的代码(对不起,我不知道是否可以附加,所以我只是粘贴)


如果我计数正确,那么问题似乎就在这条线上 “$result=mysql_query($query,$connection);”?
我在任何地方都看不到$connection的值。

对我来说,问题出在这里:
$query=“选择*
来自用户
其中username='$username';

因为如果表单是
$\u POST['cmdadd'])
不存在
$username
未设置,因此它未定义

仅当存在$\u POST['cmdadd']时,才需要使用$username启动请求。

请尝试以下操作:

    <?php 
include ('dbconnect.php');
?>
<html>
<head>
<title>New User </title>
</head>
<body>
<div class="user"><p><a href="../DBindex.php">Log In</a> </p>
</div>

<center>
<?php
if(isset($_POST['cmdadd'])) {
$username = mysql_real_escape_string($_POST["username"]);
$password = mysql_real_escape_string($_POST["password"]);
$emailaddress = mysql_real_escape_string($_POST["emailaddress"]);
$address = mysql_real_escape_string($_POST["address"]);
$telephone = mysql_real_escape_string($_POST["telephone"]);
$country = mysql_real_escape_string($_POST["country"]);

if(empty($username)){
$errors[]="Username Not Entered";
}
if(empty($password)){
$errors[]="Password Not Entered";
}
if(empty($emailaddress)){
$errors[]="Email Not Entered";
}
if(empty($telephone)){
$errors[]="PhoneNumber Not Entered";
}

if(empty($country)){
$errors[]= "Country Not Entered";
}


if(!empty($errors)){

foreach($errors as $error){
echo'<a href = "DBregistration.php"> REDO </a>'; 
echo $error."<br/>";

}
} 
else{
$query = "select * from users where username = '$username' ";

$result = mysql_query($query, $connection);

if (!$query) {
echo "<p>" . mysql_error () . "</p>";
}

$rows = mysql_num_rows($result);

if ($rows != 0 ) { ?>

<a href = "DBregistration.php"> Redo </a>

<?php
}
else {
$query = "insert into users
values              ('$username','$password','$emailaddress','$address','$telephone','$country')";

mysql_query ($query , $connection);

if (!$query) {
echo "<p>" . mysql_error() . "</p>";
}            
else { ?>

<?php

}  }
}
}
?>

新用户


您粘贴的代码不包含语法错误。这就是您的答案。我怀疑错误在其他文件中;您没有说明消息来自哪个文件。我猜可能是
dbconnect.php
没有设置
$connection

但既然你说你是个初学者,我就把别人给我的一些有用的建议告诉你。没有意义的顺序:

  • 缩进你的代码。理想情况下,使用一个检查器,例如。更好的是,使用一个带有嵌入式代码嗅探器支持的IDE:PHPStorm等。其中一些是免费的,并且得到了很好的支持。你需要一些时间来学习,但我可以保证你永远不会回头

  • 不要使用mysql_*函数。很快开始学习这些函数是没有意义的

  • 试着把你的代码分割成更小的单元,并尽可能地将HTML文本和数据分开。在第一周的时间里,这看起来是一件让人头疼的事。从维护的角度来看,这是一个非常好的习惯。你甚至可能会有兴趣看一些

  • 开发时始终最大限度地报告错误。如果存在错误、警告或通知,它们不会消失。您只能选择是您首先发现它们,还是您的用户

  • PHP错误报告和跟踪还有很多需要改进的地方。如果您使用受支持的IDE(如Eclipse with PDT),您将需要安装的工具包括,而且,在以后的很长时间内,PHPXHprof.XDebug还支持逐步调试

  • 有些人可能会认为这有点“专业”,并且建议不要在这样的虚饰上浪费时间,但要考虑一下。第一次,我也可以向你保证,时间会到来,你会做出一些改变,“没有效果!,然后你会想回去…或者看看你改变了什么,也许比较一下这两个版本…时间浪费了“在建立一个简单的本地存储库的过程中,我们会发现它确实投入了大量资金。此外,这些工具也集成在大多数IDE中。使用它们就像右键单击并选择“突出显示更改”或“与以前的版本进行比较”一样简单


    第51行就是这条线–?哇。。我们应该从最上面数第51行吗?请注意:“从PHP5.5.0开始,这个扩展就被弃用了”。您可以轻松使用MYSQLI。在sql查询中,第51行是
    $username
    。您的
    if(isset($\u POST['cmdadd'])
    语句可能会失败。请尝试不要混合太多php和html代码。如果你不这样做,它的可读性会更好。我打赌这本书不用太多的混合就能写成。对不起,伙计们,我没意识到没有类似的柜台。有问题的行是$query=“select*from username='$username'”;如果你一直向下滚动,它应该接近顶部,它修复了未定义的变量错误,你到底更改了什么?只需将第38行中的“}”移动到第81行。当创建范围时,应该考虑变量不是全局的。我强烈建议您清除代码。
    where username = '$username' ";
    
        <?php 
    include ('dbconnect.php');
    ?>
    <html>
    <head>
    <title>New User </title>
    </head>
    <body>
    <div class="user"><p><a href="../DBindex.php">Log In</a> </p>
    </div>
    
    <center>
    <?php
    if(isset($_POST['cmdadd'])) {
    $username = mysql_real_escape_string($_POST["username"]);
    $password = mysql_real_escape_string($_POST["password"]);
    $emailaddress = mysql_real_escape_string($_POST["emailaddress"]);
    $address = mysql_real_escape_string($_POST["address"]);
    $telephone = mysql_real_escape_string($_POST["telephone"]);
    $country = mysql_real_escape_string($_POST["country"]);
    
    if(empty($username)){
    $errors[]="Username Not Entered";
    }
    if(empty($password)){
    $errors[]="Password Not Entered";
    }
    if(empty($emailaddress)){
    $errors[]="Email Not Entered";
    }
    if(empty($telephone)){
    $errors[]="PhoneNumber Not Entered";
    }
    
    if(empty($country)){
    $errors[]= "Country Not Entered";
    }
    
    
    if(!empty($errors)){
    
    foreach($errors as $error){
    echo'<a href = "DBregistration.php"> REDO </a>'; 
    echo $error."<br/>";
    
    }
    } 
    else{
    $query = "select * from users where username = '$username' ";
    
    $result = mysql_query($query, $connection);
    
    if (!$query) {
    echo "<p>" . mysql_error () . "</p>";
    }
    
    $rows = mysql_num_rows($result);
    
    if ($rows != 0 ) { ?>
    
    <a href = "DBregistration.php"> Redo </a>
    
    <?php
    }
    else {
    $query = "insert into users
    values              ('$username','$password','$emailaddress','$address','$telephone','$country')";
    
    mysql_query ($query , $connection);
    
    if (!$query) {
    echo "<p>" . mysql_error() . "</p>";
    }            
    else { ?>
    
    <?php
    
    }  }
    }
    }
    ?>