[英]Get username, password and email from a form and create database row with it
我一直在努力解決這個關於jQuery,php和mySQL之間通信的問題。
長話短說,我想把你的“注冊表”中的信息插入到我的數據庫中,如果你願意的話。
這是我在login.php中的表單:
<form action="login.php" method="post">
<input type="text" name="username" id="username">
<br><br>
<input type="password" name="password">
<br><br>
<input type="text" name="email">
<br><br>
<input type="submit" value="Register" class="submitRegistration"/>
</form>
當我按下Register按鈕時,我想要觸發它,這是在head.php中。
$(document).ready(function(){
$(".submitRegistration").click(function(){
var clickBtnValue = $(this).val();
var username = $("#username").val();
var password = $("#password").val();
var email = $("#email").val();
var ajaxurl = 'ajaxdisk.php';
data = {'action': clickBtnValue};
$.post(ajaxurl, data, function (response) {
alert(response);
});
});
});
這是ajax.php中的數據庫連接和我想要運行的函數
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "swag";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//I have suspicions that this is where things go wrong, because it checks if
//$_POST['action'] != NULL before it is defined, I want it to
//do this WHEN the button is hit, not when the page loads.
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'Submit':
submit();
break;
case 'Register':
register($conn);
break;
}
}
else {
print("Error");
}
function submit() {
echo "The submit function is called.(unfinished)";
exit;
}
function register($cpnn) {
echo "The register function is called.";
$sql = "INSERT INTO MyGuests (username, password, email)
-- Here i want the values from the textboxes to be, so it gets put into the database
VALUES (username, password, email)";
if ($cpnn->query($sql) === TRUE) {
echo "New record created successfully";
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
我可能已經從無數個小時試圖解決這個問題搞砸了,但我真的希望你們其中一個人能夠理解它並認識到錯誤。
謝謝。
更改通過評論說明: -
你的html文件代碼如下: -
<form method="post">
<input type="text" name="username" id="username">
<br><br>
<input type="password" name="password" id="password"> <!-- id required -->
<br><br>
<input type="text" name="email" id="email"> <!-- id required -->
<br><br>
<input type="submit" value="Register" class="submitRegistration"/>
</form>
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script type = "text/javascript">
$(document).ready(function(){
$(".submitRegistration").click(function(e){// e for event
e.preventDefault(); // to stop form submission
var clickBtnValue = $(this).val();
var username = $("#username").val();
var password = $("#password").val();
var email = $("#email").val();
$.post('ajaxdisk.php', {'action': clickBtnValue,"username":username,"password":password,"email":email}, function (response) {
alert(response);
});
});
});
</script>
你的php文件(ajaxdisk.php)代碼如下: -
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "swag";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['action'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
echo "The register function is called.";
$sql = 'INSERT INTO `MyGuests` (username, password, email) VALUES ("'.(string)$username.'","'.(string)$password.'","'.(string)$email.'")';
if ($conn->query($sql)) {
echo "New record created successfully";
}
else {
echo "Error: ". $conn->error;
}
}
?>
注意: - 問題出在您的switch
代碼中(我無法找到答案)。 此外,您的值將以字符串形式出現,但在查詢中它不會被視為字符串(這對我來說也是可理解的,為什么會發生這種情況)
這段代碼肯定會對你有用。 檢查一次。
我的實際代碼: -
首先你必須發布你的變量,所以你的api調用應該像這樣:
data = {'action': clickBtnValue, 'username': username, 'password': password, 'email': email};
$.post(ajaxurl, data, function (response) {
alert(response);
});
});
然后在您的PHP頁面中,您可以從$ _POST對象中檢索數據。
您的SQL字符串應如下所示:
INSERT INTO MyGuests (username, password, email) VALUES ($_POST['username'], $_POST['password'], $_POST['email'])
希望這對你有所幫助,再見!
現在你沒有將任何表單數據傳遞給php文件。 使用$('form')。serialize()並將所有數據傳遞給php文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.