gpt4 book ai didi

php - 使用嵌套 AJAX 函数将新数据插入 MYSQL

转载 作者:行者123 更新时间:2023-11-29 21:33:01 24 4
gpt4 key购买 nike

我使用 JQUERY、AJAX 和 PHP 来 1) 确定用户是否已存在,然后 2) 如果用户尚不存在则添加用户。我决定尝试的方法是使用 AJAX 运行 PHP 脚本来确定用户是否存在。如果查询返回 false,则 AJAX 函数将运行另一个 AJAX 函数,该函数运行 PHP 脚本来添加用户。

我知道 AJAX 函数的“成功:”部分有效,因为我最初让它生成显示查询结果的警报。问题是当我尝试在“成功:”区域中放置第二个 AJAX 函数以便在用户不存在时添加用户时。

感觉这一定与我的“INSERT”查询语法有关,但它看起来对我来说是正确的。我搜索了以下页面只是为了确保:

http://www.w3schools.com/sql/sql_insert.asp http://www.w3schools.com/php/php_mysql_insert.asp

言归正传,这是我的代码。

HTML

<div id="btnRegister" class="btnRegisterInitial btnRaised trans500ms" style="z-index:3;">
<input id="email" class="txtInitial txtEmail trans500ms" style="font-family:arial; font-size:18px; color:#433343;" type="email" name="" value="" placeholder="">
<input id="password" class="txtInitial txtPassword trans500ms" style="font-family:arial; font-size:18px; color:#433343;" type="password" name="" value="" placeholder="">

JQUERY/AJAX:

$("#btnRegister").click(
function() {
validateUserInput(); // PLACES VALUE IN INVISIBLE INPUT IF USER INPUT IS VALID
if ($("#inputValid").val()) {
// alert("user's input is valid. User wants to register.");
$("#inputValid").val("");

$.ajax({ // AJAX TO CHECK IF USER EXISTS
url: 'UserExists.php',
type: 'post',
dataType: 'json',
data: {email: $('#email').val(), password: $('#password').val()},
success: function(data) {

if (data) { // IF RESULT OF QUERY HAS A VALUE (IT WILL IF EMAIL INPUT WAS FOUND IN DB)
alert("you exist");
} else {
alert("so, you new here?");

$.ajax({ // AJAX TO ADD USER IF USER DOESN'T ALREADY EXIST
url: 'Register.php',
type: 'post',
dataType: 'json',
data: {email: $('#email').val(), password: $('#password').val()},
success: function(data) {}
});
}
}
});

}

});

UserExists.PHP:

<?php

// SET DATABASE LINK AS A VARIABLE THAT CAN BE USED WHEN RUNNING QUERIES
$link = mysqli_connect(...db stuff...);

if (mysqli_connect_error()) { // AVOIDS ECHOING TOO MUCH SENSITIVE INFO ABOUT DATABASE ON ERROR
die("Could not connect");
}

$uiemail = mysqli_real_escape_string($link, $_POST['email']); //CREATE VARIABLE RATHER THAN WORRYING ABOUT QUOTES IN QUERY
$uipassword = mysqli_real_escape_string($link, $_POST['password']);

// SELECT all fields FROM databasename
$query = "SELECT * FROM users WHERE email='$uiemail'"; //SIMPLIFIES BY USING VARIABLE RATHER THAN WORRYING ABOUT STUPID QUOTES

// CREATE ARRAY CONTAINING ALL VALUES FOR ROW MATCHING QUERY CRITERIA
$row = mysqli_fetch_array(mysqli_query($link, $query));
$name = $row['name'];
$error = 'I could not find that user name';

if($row){
echo json_encode($name);
} else {
echo json_encode("");
}


?>

注册.PHP

<?php
$link = mysqli_connect("localhost", "web205-example", "qfz!ghWHd", "web205-example");
if (mysqli_connect_error()) {
die("Could not connect");
}

$uiemail = mysqli_real_escape_string($link, $_POST['email']); //CREATE VARIABLE RATHER THAN WORRYING ABOUT QUOTES IN QUERY
$uipassword = mysqli_real_escape_string($link, $_POST['password']);

// ENTERS NEW USER INTO TABLE
$query = "INSERT INTO `users` (`email`, `password`) VALUES ($uiemail, $uipassword)";
mysqli_query($link, $query);

?>

是的,我知道我正在以一种非常规的方式做形式上的事情。这正是我想尝试的方式。我认为问题一定出在我的 AJAX 或 PHP 查询上。

我尝试包含大部分代码。如果您需要我通过仅包含我认为重要的代码来简化,请告诉我。

谢谢!

最佳答案

感谢您的意见。我不太确定问题是什么,但在尝试了 JQUERY/AJAX: 部分(如上所示)后,我让它正常工作。以下是我所做的使其最终发挥作用的事情:

  1. 自行运行第二个 AJAX 函数以确保其正常工作(确实有效)。
  2. 重新引入了第一个 AJAX 功能。
  3. 将第二个 AJAX 函数的工作嵌套回第一个 AJAX 函数的“成功:”中。
  4. 检查了所有大括号和圆括号。

然后它就开始工作了。因此,虽然我还没有验证我的理论,但我 90% 确信,如果您真正检查上面的 JQUERY/AJAX: 部分,您会发现 curl 存在问题方括号或圆括号(这可能是一个很难发现的问题)。所以我想对我来说的教训是:如果您要复制粘贴代码,请仔细检查方括号/圆括号。

所以我只是想发布此内容,以便任何看到此内容的人都知道它是如何修复的。

感谢大家的意见。

关于php - 使用嵌套 AJAX 函数将新数据插入 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com