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

时间:2015-01-24 23:40:46

标签: php

我是PHP和自学的新手所以我知道我会有一些错误,有人可以协助我弄清楚为什么我会收到这个错误吗?我相信我已经定义了变量......

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

<?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

}  }
}
?>

第51行是:

where username = '$username' ";

4 个答案:

答案 0 :(得分:1)

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

但是既然你说你是初学者,我会传递一些我给出的建议并且发现它们很有用。没有任何有意义的顺序:

  1. 缩进代码。理想情况下,请使用CodeSniffer for PHP等检查程序。更好的是,使用具有嵌入式CodeSniffer支持的IDE:PHPStorm,Eclipse with PHP Developers Tools等。其中一些是免费且受到良好支持的。你需要一些时间来学习 - 但我可以保证你永远不会回头。

  2. 使用PDO and prepared statements代替mysql_ *函数。 毫无意义让我很快开始学习is going to disappear

  3. 尝试以较小的单位use functions whenever you can删除代码,并尽可能将HTML文本和数据保持分开。第一周看起来很痛苦。维护方面,这是一个非常好的习惯。您甚至可能有兴趣查看一些template systems

  4. 开发时始终将错误报告保持为最大值。如果错误,警告或通知 ,那么它们就不会消失。您只能选择首先发现他们的用户,还是您的用户。

  5. PHP错误报告和跟踪还有很多不足之处。您要安装的工具是XDebug,以及很久以后的PHPXHprof。如果您使用支持的IDE(如带PDT的Eclipse),XDebug也会提供逐步调试支持。

  6. 有些人可能认为这有点&#34;专业&#34;并建议不要浪费时间&#34;在这些装饰上,但是 - 考虑一个version control system。第一次,这也是我可以保证 - 时间会来,你做了一些改变,&#34;什么都行不通!&#34;,你想要回去......或看看你改变了什么,也许比较两个版本...时间&#34;浪费&#34;建立一个简单的本地存储库将被揭示出来的确得到了很好的投入。此外,这些工具集成在大多数IDE中。使用它们就像右键单击并选择“突出显示更改”一样简单。或者&#39;与以前的版本比较&#39;。

答案 1 :(得分:0)

如果我计算正确,似乎问题出在行中 “$ result = mysql_query($ query,$ connection);? 我没有在任何地方看到$ connection的值。

答案 2 :(得分:0)

对我来说问题来自: $query = "select * from users where username = '$username' ";

因为如果表单$_POST['cmdadd'])不存在,则$username未设置,因此未定义

如果$ _POST [&#39; cmdadd&#39;]存在,您只需使用$ username启动请求。

答案 3 :(得分:0)

试试这个:

    <?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

}  }
}
}
?>