猿问

尝试从文本框中获取数据并将其插入数据库

我有一个用于输入信息和注册帐户的表格。在网站上输入信息,当按下“注册”按钮时,它会通过外部 JavaScript 方法进行验证,然后使用 ajax 调用 PHP 方法,该方法应从文本框中获取信息并将其输入到数据库中。我似乎无法让 PHP 获取信息。


<?php

$mysqli = new mysqli('localhost:8080', 'root', null, 'salmonhouse');

/* check connection */

if (mysqli_connect_errno()) {

    printf("Connect failed: %s\n", mysqli_connect_error());

    exit();

}

$sql = "INSERT INTO clients (name, surname, email, address, password)

    VALUES (?,?,?,?,?)";


$name = $_POST['name'];

$surname = $_POST['surname'];

$email= $_POST['email'];

$address= $_POST['Address'];

$pass= $_POST['Password'];


$stmt = $mysqli->prepare($sql);

$stmt->bind_param("sssss", $name, $surname, $email, $address, $pass);

$stmt->execute();


?>

HTML 文本框


<form class="quote">


    <div class = inliner>

        <label>Name</label>

        <input id="name" type="text" placeholder="Name">

    </div>

    <div class = inliner>

        <label>Surname</label>

        <input id="surname" type="text" placeholder="Surname">

    </div>


    <div>

        <label>Email</label><br>

        <input id="email" type="email" placeholder="Email Address"><br>

    </div>


    <div>

        <label>Address</label><br>

        <input id="Address" type="email" placeholder="Home Address"><br>

    </div>



    <div class = inliner>

        <label>Password</label>

        <input id="Password" type="text" placeholder="Password">

    </div>

    <div class = inliner>

        <label>Verify Password</label>

        <input id="vPassword" type="text" placeholder="Password">

    </div>

    <br><button class="button_1" type="button" onclick="Validate()">Register</button>


</form>


这个 PHP 文件是一个单独的文件,只有这个代码。我已经测试过,如果我手动设置变量而不是尝试检索它们,则数据会成功插入到数据库中。所以从我的测试来看,它只是检索不起作用。我也试过$_REQUEST['name']


这是 ajax/xmlhttprequest 代码。


xmlhttp = new XMLHttpRequest();

var url = "asset/php/inserting.php";

xmlhttp.open("POST",url,true);

xmlhttp.send();


POPMUISE
浏览 128回答 2
2回答

慕虎7371278

您可以在ajax调用中附加变量,您需要在 php 页面中使用它&来分隔变量和=分配值 .i,e :&nbsp;//attaching values to pass&nbsp; &nbsp; var data = "name=" + name + "&email=" + email + "&surname=" + surname + "&Address=" + Address + "&Password=" + Password;&nbsp; &nbsp; if (window.XMLHttpRequest) {&nbsp; &nbsp; &nbsp; request = new XMLHttpRequest();&nbsp; &nbsp; } else if (window.ActiveXObject) {&nbsp; &nbsp; &nbsp; request = new ActiveXObject("Microsoft.XMLHTTP");&nbsp; &nbsp; }&nbsp; &nbsp; request.onreadystatechange = function() {&nbsp; &nbsp; &nbsp; if (this.readyState == 4 && this.status == 200) {&nbsp; &nbsp; &nbsp; &nbsp;//if success do something here&nbsp;&nbsp; alert("save");&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; };&nbsp; &nbsp; var url = "asset/php/inserting.php";&nbsp; &nbsp; request.open("POST", url, true);&nbsp; &nbsp; //send data to php page&nbsp; &nbsp; request.send(data);

慕容3067478

我的建议是使用 jQuery 库而不是 XMLHttpRequest。您需要在<head>HTML 部分包含一个<script>标签,以便从某些 CDN(内容交付网络)加载 jQuery 库。也添加id="f"到您的<form>标签。那么你的 Ajax 调用就可以很简单:$.ajax({&nbsp; &nbsp; type: "POST",&nbsp; &nbsp; url: 'asset/php/inserting.php',&nbsp; &nbsp; data: $('#f').serialize(), // serializes the form's elements.&nbsp; &nbsp; success: function(msg)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; alert(msg); // show response from the php script.&nbsp; &nbsp; }});
随时随地看视频慕课网APP
我要回答