我是PHP的新手,已经编写了一个注册PHP页面,它工作正常,可以为新用户添加数据库。但是,在添加重复的用户名时,不会显示错误消息。我错过了任何代码,还是需要更改代码?
我的代码:
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'login');
define('DB_USER','root');
define('DB_PASSWORD','');
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());
function NewUser()
{
$username = $_POST['username'];
$password = $_POST['password'];
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$query = "INSERT INTO users (username, password, firstname, surname) VALUES ('$username', '$password', '$firstname', '$surname')";
$data = mysql_query ($query)or die(mysql_error());
if($data)
{
echo "YOUR REGISTRATION IS COMPLETED, YOU CAN SIGN IN NOW";
}
}
function SignUp()
{
if(!empty($_POST['username']))
{
$query = mysql_query("SELECT * FROM users WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error());
if(!$row = mysql_fetch_array($query) or die(mysql_error()))
{
newuser();
}
else
{
echo "SORRY, YOU ARE ALREADY REGISTERED USER.";
}
}
}
if(isset($_POST['submit']))
{
SignUp();
}
?>
答案 0 :(得分:0)
既然你是新手,你也可以放弃MySQL_
语句,并选择像MySQLi_
或PDO这样更安全的东西。这不会禁止您使用数据库,它们更安全。
另外:$row
未定义。
再一次,因为你是新手,我建议使用一个编辑器,让你缩进你的代码。缩进使您的代码更具可读性,并在遇到此类问题时帮助其他人帮助您。
答案 1 :(得分:0)
$row
未定义,请尝试使用mysql_num_rows
如果您想访问列值,可以使用mysql_fetch_array
在这种情况下,您只需检查$query
是否返回了一行。
所以你可以将代码更改为
正如你所做的那样
$data = mysql_query ($query)or die(mysql_error());
if($data)
{
echo "YOUR REGISTRATION IS COMPLETED, YOU CAN SIGN IN NOW";
}
$query = mysql_query("SELECT * FROM users WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error());
if($query){
newuser();
}else{
echo "SORRY, YOU ARE ALREADY REGISTERED USER.";
}