我尝试了echo($numrows);
numrows
等于0
。
那么为什么我收到此错误:用户名存在?
我经常去过很多次,但我找不到问题所在。
<?php
function generateRandomString($length = 6) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
//innen regiszt:
$username = strip_tags($_POST['username']);
$email1 = strip_tags($_POST['email1']);
$email2 = strip_tags($_POST['email2']);
$pw1 = strip_tags($_POST['pw1']);
$pw2 = strip_tags($_POST['pw2']);
if($username&&$email1&&$email2&&$pw1&&$pw2)
{
if ($email1==$email2)
{
if ($pw1==$pw2)
{
if (5<strlen($pw1)&&20>=strlen($pw1))
{
if (5<strlen($pw1)&&20>=strlen($pw1))
{
$connect = mysql_connect('HOST','UNAME','PW');
$database = mysql_select_db('virtualtc',$connect);
$query = mysql_query("SELECT * FROM users WHERE username='$username'");
$querymail = mysql_query("SELECT * FROM users WHERE email='$email1'");
$numrowsmail = mysql_num_rows($querymail);
$numrows = mysql_num_rows($query);
if ($numrows=0)
{
if ($querymail=0)
{
$md5pass= md5($pw1);
$date=date("Y-m-d");
$query3 = mysql_query(
"INSERT INTO users VALUES '','$username','$md5pass','$email1', 0 ,'$date'");
include("registration_complete.php");//regist
}else include("/errors/email_exists.html");//email exists
}else include("/errors/user_exists.html")//user exists
}else include("/errors/uname_length.html");//username length 6-20!
}else include("/errors/pass_length.html"); //password length 6-20!
} else include("/errors/different_pw.html");//different password
} else include("/errors/different_email.html");//different email
} else include("/errors/empty_regist.html");//empty field
?>
答案 0 :(得分:1)
您编写了if($numrows=0)
,将$numrows
更改为0,然后检查该值。 php中的0等于false,这就是执行else块的原因。
<强>旁注:强> 请注意阅读arrow code。您可以编写一个函数来检查是否使用了用户名...
答案 1 :(得分:1)
因为您要分配,而不是比较
if ($numrows=0)
应该是
if ($numrows==0)
同样适用于其他条件陈述。
好吧,我没有看到你的架构,但我会这样做:
mysql_query("INSERT INTO users VALUES (NULL,'$username','$md5pass','$email1', 0 ,'$date')");
假设您的第一列是AI。
另外,在传递数据库之前不要忘记准备数据,例如至少使用addslashes。
答案 2 :(得分:0)
仅使用一个=
会将$numrows
设置为0
,而不会检查$numrows
是否为0
if($numrows == 0)
答案 3 :(得分:0)