Php 每次我刷新页面时,它都会将同一个用户插入到数据库中
下面是PHP代码Php 每次我刷新页面时,它都会将同一个用户插入到数据库中,php,mysql,Php,Mysql,下面是PHP代码 <?php if(isset($_POST['Murad'])){ $firstname=$_POST['firstname']; $lastname=$_POST['lastname']; $userName=$_POST['username']; $password=$_POST['pwd1']; $userName = stripslashes($userName); $password = stripslashes($password); $email=$_POS
<?php
if(isset($_POST['Murad'])){
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$userName=$_POST['username'];
$password=$_POST['pwd1'];
$userName = stripslashes($userName);
$password = stripslashes($password);
$email=$_POST['email'];
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "123";
$mysql_databse = "websiteusers";
$prefix = "";
$bd = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
$sql = "INSERT INTO websiteusers
(fullname,lastname,userName,email,pass)
VALUES ( '$firstname', '$lastname','$userName', '$email','$password')";
mysqli_select_db($bd,'websiteusers');
$retval = mysqli_query($bd,$sql );
if(! $retval )
{
die('Could not enter data: ');
return false;
}
else {echo "Entered data successfully\n";
}
$usernamecheck=mysqli_query($bd,"SELECT `userName` FROM `websiteusers`
WHERE userName='$userName'");
if(mysqli_num_rows($usernamecheck)>=1){
echo $userName." is already taken";
return false;
}header("Location: Main.php");}
?>
用户在其个人资料页面中注册后,只要刷新该页面,就会再次插入相同的用户名。而且用户名和电子邮件在my dt中是唯一的,它无法插入,并给出一个错误。您现在要做的是在DB中插入一个用户,然后检查该用户是否存在。你必须移动一些代码
$bd = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
$usernamecheck=mysqli_query($bd,"SELECT `userName` FROM `websiteusers`
WHERE userName='$userName'");
if(mysqli_num_rows($usernamecheck)>=1){
echo $userName." is already taken";
} else {
$sql = "INSERT INTO websiteusers
(fullname,lastname,userName,email,pass)
VALUES ( '$firstname', '$lastname','$userName', '$email','$password')";
mysqli_select_db($bd,'websiteusers');
$retval = mysqli_query($bd,$sql );
if(! $retval )
{
die('Could not enter data: ');
}
else {
echo "Entered data successfully\n";
}
}
}
这样,您首先检查用户是否已经存在。如果有-您将终止脚本,并且之后的代码不会执行。否则,在数据库中插入一个用户现在要做的是在数据库中插入一个用户,然后检查该用户是否存在。你必须移动一些代码
$bd = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
$usernamecheck=mysqli_query($bd,"SELECT `userName` FROM `websiteusers`
WHERE userName='$userName'");
if(mysqli_num_rows($usernamecheck)>=1){
echo $userName." is already taken";
} else {
$sql = "INSERT INTO websiteusers
(fullname,lastname,userName,email,pass)
VALUES ( '$firstname', '$lastname','$userName', '$email','$password')";
mysqli_select_db($bd,'websiteusers');
$retval = mysqli_query($bd,$sql );
if(! $retval )
{
die('Could not enter data: ');
}
else {
echo "Entered data successfully\n";
}
}
}
这样,您首先检查用户是否已经存在。如果有-您将终止脚本,并且之后的代码不会执行。否则,您将在DB中插入一个用户,您可以在表单成功提交后执行此操作 您可以重置表单
this.form.reset();
或
将用户重定向到同一页面
重新设置窗体
this.form.reset();
在表单成功提交后调用此函数您可以在表单成功提交后执行此操作 您可以重置表单
this.form.reset();
或
将用户重定向到同一页面
重新设置窗体
this.form.reset();
在表单成功提交后调用此操作尝试以下操作:
<?php
if(isset($_POST['Murad'])) {
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$userName=$_POST['username'];
$password=$_POST['pwd1'];
$userName = stripslashes($userName);
$password = stripslashes($password);
$email=$_POST['email'];
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "123";
$mysql_databse = "websiteusers";
$prefix = "";
$link = new PDO('mysql:dbhost='.$mysql_hostname.';dbname='.$mysql_database,$mysql_user, $mysql_password);
$unamecheck = ("SELECT userName FROM websiteusers WHERE userName = :uname");
$unamecheck = $link->prepare($unamecheck);
$unamecheck->execute(array(':uname'=>$userName));
if($unamecheck->rowCount() > 0) {
echo "Username taken";
die();
} else {
$add = ("INSERT INTO websiteusers (fullname, lastname, userName, email, pass) VALUES (:fname, :lname, :uname, :pass)");
$add = $link->prepare($add);
$add->execute(array(':fname'=>$firstname, ':lname'=>$lastname, ':uname'=>$userName, ':pass'=>$password));
if($add->rowCount() > 0) {
echo "Registration successful";
header("Location: Main.php");
} else {
echo "Registration failed";
}
}
}
?>
试试这个:
<?php
if(isset($_POST['Murad'])) {
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$userName=$_POST['username'];
$password=$_POST['pwd1'];
$userName = stripslashes($userName);
$password = stripslashes($password);
$email=$_POST['email'];
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "123";
$mysql_databse = "websiteusers";
$prefix = "";
$link = new PDO('mysql:dbhost='.$mysql_hostname.';dbname='.$mysql_database,$mysql_user, $mysql_password);
$unamecheck = ("SELECT userName FROM websiteusers WHERE userName = :uname");
$unamecheck = $link->prepare($unamecheck);
$unamecheck->execute(array(':uname'=>$userName));
if($unamecheck->rowCount() > 0) {
echo "Username taken";
die();
} else {
$add = ("INSERT INTO websiteusers (fullname, lastname, userName, email, pass) VALUES (:fname, :lname, :uname, :pass)");
$add = $link->prepare($add);
$add->execute(array(':fname'=>$firstname, ':lname'=>$lastname, ':uname'=>$userName, ':pass'=>$password));
if($add->rowCount() > 0) {
echo "Registration successful";
header("Location: Main.php");
} else {
echo "Registration failed";
}
}
}
?>
您可能希望查看POST/Redirect/GET模式,即。或者您可能希望查看POST/Redirect/GET模式,即。或者,如果mysqli_num_rows$usernamecheck>=1mysqli_num_rows期望参数1为mysqli_result,则此行会出现错误,第18行C:\AppServ\www\murad\centil\o\ch.php中给出的布尔值尝试将SELECT查询更改为SELECT*FROM websiteusers,其中userName='$userName'我添加了此代码$result=mysqli\u query$bd,$usernamecheck或die;它删除了这个错误,但是现在它给了mysqli_query[function.mysqli query]:空查询,基本上这个错误意味着查询失败。通常情况下,这是一个语法错误,看起来不是大小写,或者表\列不存在。如果mysqli_num_rows$usernamecheck>=1mysqli_num_rows期望参数1是mysqli_result,则在此行中会出现错误,第18行C:\AppServ\www\murad\centil\o\ch.php中给出的布尔值尝试将SELECT查询更改为SELECT*FROM websiteusers,其中userName='$userName'我添加了此代码$result=mysqli\u query$bd,$usernamecheck或die;它删除了这个错误,但是现在它给了mysqli_query[function.mysqli query]:空查询,基本上这个错误意味着查询失败。通常这是一个语法错误,看起来不是大小写,或者表\列不存在。$'full'。submitfunction{this.FORM.reset;console.logsubmitted;};是的,但在表单提交并插入值后在php内部调用它,如以下回显“$”full“。submitfunction{this.form.reset;console.logsubmitted;};'但这通常不是一个好的做法,因为在当前场景中,表单和提交代码位于同一页面上,因此这可以工作,但当您遵循一些良好的开发标准(如MVC)时,就无法工作了。那么,您只有一个选择,即重定向用户$'full'。submitFunction{this.FORM.reset;console.logsubmitted;};是的,但在表单提交并插入值后在php内部调用它,如echo'$'full'。submitfunction{this.FORM.reset;console.logsubmitted;}'但这通常不是一个好的做法,因为在当前场景中,表单和提交代码位于同一页面上,因此这可以工作,但当您遵循一些良好的开发标准(如MVC)时,则无法工作。那么,您只有一个选项,即重定向usermysqli_查询期望参数2为字符串,对象给定init显示bun错误类别:未捕获异常“PDOException”,在C:\AppServ\www\murad\centil\o\ch.php中显示消息“找不到驱动程序”:16堆栈跟踪:0 C:\AppServ\www\murad\centil\o\ch.php16:PDO->\u构造“mysql:dbhost=lo…”,“root”,“123”1 C:\AppServ\www\murad\centil\o\Main.php2:include'C:\AppServ\www\…'2{main}在第16mysqli_行的C:\AppServ\www\murad\centil\o\ch.php中抛出,查询期望参数2为字符串,给定init的对象显示了一系列错误:未捕获异常“PDOException”,在C:\AppServ\www\murad\centil\o\ch.php中显示消息“找不到驱动程序”:16堆栈跟踪:0C:\AppServ\www\murad\centil\o\ch.php16:PDO->u构造'mysql:dbhost=lo…','root','123'1c:\AppServ\www\murad\centil\o\Main.php2:包括在第16行的C:\AppServ\www\…'2{Main}中抛出的'C:\AppServ\www\murad\centil\o\ch.php