Jquery Ajax将数据插入数据库

时间:2014-11-12 19:46:00

标签: javascript php jquery mysql ajax

我有一个包含三种形式的页面,在这些表单上是单独的变量。该页面允许用户输入详细信息,并将它们插入MySQL数据库以供查看。我有脚本:

编辑:我也知道mySql_已被弃用,但为了示例,它工作正常。

编辑2:我知道你可以注入,但目前这是非常无关紧要的,我认为使用文本区域而不是简单的输入是一个问题。

编辑3:这只是一个错字。

      $("#finishButton").click(function(e) { // store final value and execute script to insert into DB. On success, switch to success page
        var commentsValid = $('#commentsDetailsForm').valid();
        if (commentsValid) {
          comments = document.getElementById('commentsInput').value;
          e.preventDefault();
          $.ajax({
            type: "POST",
            url: 'insert.php',
            data: 'forenameInput=' + forename + '&surnameInput=' + surname + '&emailInput=' + email + '&telephoneInput=' + telephone + '&genderInput=' + gender + '&dobInput=' + dob + '&commentInput=' + comments,
            success: function (data) {
              if (data == "Error") {
                $("#error").show();
                $("#processing").hide();
              } else {
                window.location.href = "success.php";
              }
            }
          });
        } else {

        }
      });

这意味着将所有细节存储到数据库中。但事实上,除了注释(最终变量)之外,它将所有细节存储在数据库中。我在完成数据声明时是否存在其他根本性错误?

PHP脚本:

<?php
// Connection Details
$servername = "localhost";
$username = "root";
$password = "user10";
$dbname = "test";

// Create connection
$conn = mysql_connect($servername, $username, $password);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysql_connect_error());
}

// Select database
mysql_select_db($dbname,$conn);

// Store posted data in variables
$forename = $_POST['forenameInput'];
$surname = $_POST['surnameInput'];
$email= $_POST['emailInput'];
$telephone = $_POST['telephoneInput'];
$dob = $_POST['dobInput'];
$gender = $_POST['genderInput'];
$comments = $_POST['commentsInput'];

//Change date of birth so it's storable in mysql database
$dobAlt = date('Y-m-d',strtotime($dob));

// Insert form information into database
$sqlQuery = "INSERT INTO test (firstName, lastName, email, telephone, gender, dob, comments) VALUES ('$forename','$surname','$email','$telephone','$gender','$dobAlt', '$comments')";

// Check if query worked
if (mysql_query($sqlQuery, $conn)) {

} else {
    echo "Error: " . $sql . "<br>" . mysql_error($conn);
}

// Close db
mysql_close();

?>

HTML:

<form id = "commentsDetailsForm" name = "commentsDetailsForm" method = "post">
<label for "commentsInput" id = "labels"> Comments </label>
<br>                
<textarea id = "commentsInput" rows= "2" name = "commentsInput" class = "input-block-level"></textarea>
<br>
<div id = "registrationButtonWrapper">
  <button id = "finishButton" class = "insertDetailsFinal" name = "finish"> finish > </button>
</div>
</form>

您还可以在http://chriswaszczuk.me/jobTest/看到它正在运行(您必须填写表单才能查看数据库)。

2 个答案:

答案 0 :(得分:1)

你有一个拼写错误。

<强> JS

'&commentInput=' + comments - commentInput - singular

<强> PHP

$comments = $_POST['commentsInput']; - commentsInput - 复数

答案 1 :(得分:0)

问题可能是该值包含网址中不允许的字符。

您应该确保所有变量都已正确编码:

 '&commentInput=' + encodeURIComponent(comments)

这适用于所有变量。

除此之外,你有一个SQL注入问题。您应该切换到PDO或mysqli并使用预准备语句。