我一直在尝试解决有关jQuery,php和mySQL之间通信的问题。
长话短说,我想通过PHP将“注册表格”中的信息插入到我的数据库中。
这是我的表单,位于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>
我希望在按下“注册”按钮时触发它,它位于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
代码中(我无法找出原因)。另外,您的值以字符串形式出现,但在查询中不会被视为字符串(这对我来说也是很难理解的,为什么会这样)
此代码肯定会为您工作。检查一次。
我的实际代码:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句