如何使用Ajax和PHP将表单数据输入数据库
我想使用ajax获取表单数据,然后将其提交到我的php页面,然后将其插入到我的数据库中。成功插入时,我想显示“您已成功注册”,失败时显示“注册失败”,如果您已经是会员,我想显示“已经是会员,请登录” 由于某些原因,我的ajax代码没有像我预期的那样工作。它跳到了最后一部分(else语句,甚至不关心if语句)。我的php代码是正确的。因为我已经单独测试过了,效果很好 有人能给我建议一个解决方案或另一种方法来完成这项任务吗?请记住,我不想进入另一页。 以下是我的JavaScript/jQuery代码:如何使用Ajax和PHP将表单数据输入数据库,php,jquery,ajax,mysqli,Php,Jquery,Ajax,Mysqli,我想使用ajax获取表单数据,然后将其提交到我的php页面,然后将其插入到我的数据库中。成功插入时,我想显示“您已成功注册”,失败时显示“注册失败”,如果您已经是会员,我想显示“已经是会员,请登录” 由于某些原因,我的ajax代码没有像我预期的那样工作。它跳到了最后一部分(else语句,甚至不关心if语句)。我的php代码是正确的。因为我已经单独测试过了,效果很好 有人能给我建议一个解决方案或另一种方法来完成这项任务吗?请记住,我不想进入另一页。 以下是我的JavaScript/jQuery代码
$(document).ready(function){
//Signup Js
$("#Register").click(function(){ //#Register is my submit button id
var action = $("#sp-form").attr('action'); //#sp-form is the register form id.
var spform_data = {
myusername: $("#myusername").val(),
myemail: $("#myemail").val(),
mypassword: $("#mypassword").val() //Getting data from the input forms using their respective id's
}
$.ajax({
type: "POST",
url: action,
data: spform_data,
success: function(outcome)
{
if(outcome == "success"){
$("#sp-form").slideUp('slow', function(){
$("#message_sp").html('<p class="success">You have been registered successfully!</p><p style="color:#1c1c1c;">Redirecting....</p>');
});
}
else if(outcome == "alreadymember") {
$("#modal_signup").css("height","380");
$("#message_sp").html('<p class="error">ERROR: Email match found,Just Sign in.</p>');
}
else if(outcome == "failed"){
$("#modal_signup").css("height","380");
$("#message_sp").html('<p class="error">ERROR: Failed to Register</p>');
}
else{
$("#modal_signup").css("height","380");
$("#message_sp").html('<p class="error">ERROR: Unknown ERROR</p>');
}
}
});
return false;
});
});
$(文档).ready(函数){
//注册Js
$(“#注册”)。单击(函数(){/#注册是我的提交按钮id
var action=$(“#sp form”)。attr('action');/#sp form是注册表表单id。
变量spform_数据={
myusername:$(“#myusername”).val(),
myemail:$(“#myemail”).val(),
mypassword:$(“#mypassword”).val()//使用输入表单各自的id从输入表单获取数据
}
$.ajax({
类型:“POST”,
url:action,
数据:SPU表格数据,
成功:功能(结果)
{
如果(结果=“成功”){
$(“#sp form”).slideUp('slow',function(){
$(“#message_sp”).html(“您已成功注册!
);
});
}
否则,如果(结果=“alreadymember”){
$(“模态注册”).css(“高度”、“380”);
$(“#message_sp”).html(“
错误:找到电子邮件匹配项,请登录。
”);
}
否则如果(结果=“失败”){
$(“模态注册”).css(“高度”、“380”);
$(“#message_sp”).html(“错误:注册失败”
”;
}
否则{
$(“模态注册”).css(“高度”、“380”);
$(“#message_sp”).html(“错误:未知错误”
”);
}
}
});
返回false;
});
});
这是我的PHP/MySQLi代码
<?php
if ($_POST)
{
$host = "localhost";
$user= "root";
$password = " ";
try {
$conn = mysqli_connect($host , $user , $password) or die("unable to connect to Local Host"); //Establishing connection with the server
$sql = mysqli_select_db($conn,'audacity') or die("unable to connect to database"); //selecting a database from the server #after connecting
} catch (Exception $e) {
echo $e->getMessage();
}
$name = mysqli_real_escape_string($conn,$_POST['myusername']);
$mail = mysqli_real_escape_string($conn,$_POST['myemail']);
$pass = mysqli_real_escape_string($conn,$_POST['mypassword']);
// Query of SQL
$Query =mysqli_query($conn,"INSERT INTO registration (Username,Email,Password) VALUES ('$name', '$mail' , '$pass')")) //if successful outcome is true
if($Query ==true){
echo "success";
}
elseif ($Query==false) { #if failed
$sqlbd = "SELECT Email FROM registration WHERE Email='$mail' ";
$result = mysqli_query($conn,$sqlbd);
if(mysqli_num_rows($result)==1){ //possible rsn for failure
echo "alreadymember";
}
else{
echo "failed"; //unknown reason.
}
}
mysqli_close($conn);
?>
我认为您必须检查ifs语句中的num_行是否==1…您的php只需输入email,然后将num行作为else语句进行检查…您首先检查num行,然后设置if语句,或者您已经为您的email列设置了唯一性?我认为您必须检查ifs语句中的num_行是否==1语句…您的php只需输入email,然后将num rows作为else语句进行检查…您首先检查num rows,然后设置if语句,或者设置了电子邮件列的唯一性?我可以确认您的代码有许多错误。
我附上一份代码的更正版本;然而,我将假设(从php代码)的目标是防止多次注册;如果是这种情况,应该检查您的逻辑。您在检查之前插入了,因此检查代码永远不会运行。因此,请在尝试插入之前进行检查。整体代码似乎不太好。
我只是修正了错误,你应该在逻辑上下功夫
JQuery
$(文档).ready(函数(){
$(“#sp表单”)。提交(功能(e){
返回false;
});
$(“#注册”)。单击(函数(){
var action=$(“#sp form”).attr('action');/#sp form
是登记表id。
变量spform_数据={
myusername:$(“#myusername”).val(),
myemail:$(“#myemail”).val(),
我的密码:$(“#我的密码”).val()
//使用各自的id从输入表单获取数据
}
$.ajax({
类型:“POST”,
url:action,
数据:SPU表格数据,
成功:功能(结果)
{
如果(结果指数(“成功”)>=0){
$(“#sp form”).slideUp('slow',function(){
$(“#message_sp”).html('您已成功注册!
重定向…
);
});
}
else if(output.indexOf(“alreadymember”)>=0){
$(“模态注册”).css(“高度”、“380”);
$(“#message_sp”).html('错误:找到匹配的电子邮件,只需登录即可。
”;
}
else if(output.indexOf(“failed”)>=0){
$(“模态注册”).css(“高度”、“380”);
$(“#message_sp”).html('错误:注册失败(p>);
}
否则{
$(“模态注册”).css(“高度”、“380”);
$(“#message_sp”).html('
未知错误
”;
}
}
});
返回false;
});
});
//Php
$host=“localhost”;
$user=“root”;
$password=“”;
$conn=“”;
试一试{
$conn=mysqli\u connect($host、$user、$password)或
die(“无法连接到本地主机”);//与建立连接
服务器
$sql=mysqli\u选择\u db($conn,'audacity')或死亡(“无法
连接到数据库“;//从服务器中选择数据库#之后
连接
}捕获(例外$e){
echo$e->getMessage();
}
$name=mysqli\u real
$("#sp-form").submit(function (e) {
return false;
});
$("#Register").click(function () {
var action = $("#sp-form").attr('action'); //#sp-form
is the register form id.
var spform_data = {
myusername: $("#myusername").val(),
myemail: $("#myemail").val(),
mypassword: $("#mypassword").val()
//Getting data from the input forms using their respective id's
}
$.ajax({
type: "POST",
url: action,
data: spform_data,
success: function (outcome)
{
if (outcome.indexOf("success")>=0) {
$("#sp-form").slideUp('slow', function () {
$("#message_sp").html('<p
class="success">You have been registered successfully!</p><p
style="color:#1c1c1c;">Redirecting....</p>');
});
}
else if (outcome.indexOf("alreadymember")>=0) {
$("#modal_signup").css("height", "380");
$("#message_sp").html('<p
class="error">ERROR: Email match found,Just Sign in.</p>');
}
else if (outcome.indexOf("failed")>=0) {
$("#modal_signup").css("height", "380");
$("#message_sp").html('<p
class="error">ERROR: Failed to Register</p>');
}
else {
$("#modal_signup").css("height", "380");
$("#message_sp").html('<p
class="error">Unknown Error</p>');
}
}
});
return false;
});
});
// Php
$host = "localhost";
$user = "root";
$password = "";
$conn = "";
try {
$conn = mysqli_connect($host, $user, $password) or
die("unable to connect to Local Host"); //Establishing connection with
the server
$sql = mysqli_select_db($conn, 'audacity') or die("unable
to connect to database"); //selecting a database from the server #after
connecting
} catch (Exception $e) {
echo $e->getMessage();
}
$name = mysqli_real_escape_string($conn, $_POST['myusername']);
$mail = mysqli_real_escape_string($conn, $_POST['myemail']);
$pass = mysqli_real_escape_string($conn, $_POST['mypassword']);
// Query of SQL
$Query = mysqli_query($conn, "INSERT INTO registration
(Username,Email,Password) VALUES ('$name', '$mail' , '$pass')"); //if
successful outcome is true
if ($Query == true) {
echo "success";
} elseif ($Query == false) { #if failed
$sqlbd = "SELECT Email FROM registration WHERE
Email='$mail' ";
$result = mysqli_query($conn, $sqlbd);
if (mysqli_num_rows($result) == 1) { //possible rsn for
failure
echo "alreadymember";
} else {
echo "failed"; //unknown reason.
}
}
mysqli_close($conn);
}