我是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' ";
答案 0 :(得分:1)
您粘贴的代码不包含语法错误。这就是你的答案。我怀疑错误是在其他文件中;你没有说消息来自哪个文件。可能dbconnect.php
未设置$connection
,我猜。
但是既然你说你是初学者,我会传递一些我给出的建议并且发现它们很有用。没有任何有意义的顺序:
缩进代码。理想情况下,请使用CodeSniffer for PHP等检查程序。更好的是,使用具有嵌入式CodeSniffer支持的IDE:PHPStorm,Eclipse with PHP Developers Tools等。其中一些是免费且受到良好支持的。你需要一些时间来学习 - 但我可以保证你永远不会回头。
使用PDO and prepared statements代替mysql_ *函数。 毫无意义让我很快开始学习is going to disappear。
尝试以较小的单位use functions whenever you can删除代码,并尽可能将HTML文本和数据保持分开。第一周看起来很痛苦。维护方面,这是一个非常好的习惯。您甚至可能有兴趣查看一些template systems。
开发时始终将错误报告保持为最大值。如果错误,警告或通知 ,那么它们就不会消失。您只能选择首先发现他们的用户,还是您的用户。
PHP错误报告和跟踪还有很多不足之处。您要安装的工具是XDebug,以及很久以后的PHPXHprof。如果您使用支持的IDE(如带PDT的Eclipse),XDebug也会提供逐步调试支持。
有些人可能认为这有点&#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
} }
}
}
?>