PHP MySQL jquery:数据未插入


php mysql jquery: data not inserting

>我在将表单数据提交到本地MySQL数据库时出现插入错误。 我已经为此工作了一段时间,但不太明白问题是什么。 我希望有人能看看这个并告诉我我做错了什么。

谢谢

以下是相关代码:

jquery.main.js:

//jquery.main.js
$('#submit_second').click(function(){
    //send information to server
    var data = $('#kisForm :input').serializeArray();
    $.post( $('#kisForm').attr('action'), data, function(info) {
        $('#result').html(info);
    });
    alert('Data sent')
    return;
});

$('kisForm').submit( function() {
    return false;
});

用户信息.php

    <?php
include_once('db.php');
    $firstname = $_POST['firstname'];
    $middlename = $_POST['middlename'];
    $lastname = $_POST['lastname'];
 $query = ("INSERT INTO users VALUES ('$firstname', '$middlename', '$lastname')");
if(!$conn){
   die("Can not connect: " .mysql_error());
  }
if(mysql_query($query)){
    echo "Record added successfully";[];
  } else {
    echo "Error: Record insert failed";
  }
     mysql_close($conn);

索引.html

<!DOCTYPE HTML>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title></title>
    <link rel="stylesheet" type="text/css" href="css/style.css" media="all"/>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
    <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/jquery.main.js"></script>
    <script type="text/javascript" src="js/cities.js"></script>
    <script type="text/javascript" src="js/masked_input_1.3.1.js"></script>

</head>
<body>
<div id="container">
    <form id=kisForm action="userInfo.php" method="post">
        <!-- #first_step -->
        <div id="first_step">
            <h1>Volunteer Signup Form</h1>
            <div class="form">
                <input type="text" name="firstname" id="firstname" placeholder="first name"/>
                <label for="firstname">Your first name. </label>
                <input type="nr" name="middlename" id="middlename" placeholder="middle name"/>
                <label for="middlename">Your middle name if applicable. </label>
                <input type="text" name="lastname" id="lastname" placeholder="last name"/>
                <label for="lastname">Your last name.</label>
                <!-- clearfix -->
                <div class="clear"></div>
                <input class="submit" type="submit" name="submit_first" id="submit_first" value="" />
            </div>
        </div>
        <!-- #second step -->
        <div id="second_step">
            <h1>KIS Volunteer Signup Form</h1>
            <div class="form">
                <h2>Summary</h2>
                <div id="leftSummary">
                    <table>
                        <tr><td>First Name: </td><td></td></tr>
                        <tr><td>Middle Name:</td><td></td></tr>
                        <tr><td>Last Name: </td><td></td></tr>
                    </table>
                </div>
                <span id="result"></span>
            </div>
            <!-- clearfix -->
            <div class="clear"></div>
            <!-- /clearfix -->
            <input class="back" type="button" value=""/>
            <input class="send submit" type="submit" name="submit_second" id="submit_second" value=""/>
        </div>
        <div id = "third_step">
        </div>
    </form>
</div>
<div id="progress_bar">
    <div id="progress"></div>
    <div id="progress_text">0% Complete</div>
</div>

</body>
</html>

请向我们展示错误:

我认为这部分不完整,您需要指定表字段。

$query = ("插入用户值 ('$firstname', '$middlename', "$lastname")");

更改为

$query = ("插入用户(名字、中间名、姓氏)值 ("$firstname"、"$middlename"、"$lastname"));

或者,如果您不想指定,请在字段中输入"

$query = ("插入用户值 ('', '$firstname', '$middlename', "$lastname")");

我假设第一个字段是用户 ID。

好的,所以根据你上面向我们展示的内容,据我所知,问题出在这个代码中

 $query = ("INSERT INTO users VALUES ('$firstname', '$middlename', '$lastname')");

如果未指定要插入值的字段,则必须填写查询中的字段

例如。在您的用户表中,您有 5 个字段,如果您只想插入到 firstname 中,middlename lastname指定它们。

 $query = ("INSERT INTO users(firstname, middlename, lastname) VALUES ('$firstname', '$middlename', '$lastname')");

但是如果您的表只有 3 个字段,我认为您的查询没有任何问题。

但是,如果您要使用自己的语法,则至少应该填写5个字段(假设您有5个字段。

$query = ("INSERT INTO users VALUES ('$id','$firstname', '$middlename', '$lastname','$username')");

结论:

如果表上有 5 个字段,并且不想在查询中指定字段,则查询的 values() 中必须包含 5 个值;

但是,如果您只想插入 3 个字段表中的 5 个字段,则必须指定字段,否则会引发错误。

好的,我终于想通了。

首先,最初我没有返回MySQL错误,而是返回了我自己的编码错误,所以我无法看到真正的问题。 所以我回应了'mysql_error(),并确定错误是数据库未定义。 我使用"用户"表作为"mysql_select_db()"参数。当我把数据库放在参数中时,一切都开始正常工作。

这是修复:

mysql_select_db('kis'); <---'kis' is the database, not 'users.'

我还将数据库连接代码放在与选择代码相同的 php 文件中,而不是作为"包含"文件,但我确信这与它没有任何关系。

我衷心感谢Nikko,Kimbarcelona,Patrick Q和user3462511花时间和精力提供帮助。

这是更新的 php 文件:

<?php
$conn = mysql_connect('localhost', 'root', '');
 mysql_select_db('kis');
if(!$conn){
    die("Can not connect: " .mysql_error());
}
    $firstname = $_POST['firstname'];
    $middlename = $_POST['middlename'];
    $lastname = $_POST['lastname'];
    if(mysql_query("INSERT INTO users VALUES ('','$firstname', '$middlename', '$lastname')")) {
        echo "Successfully Inserted Data";
    } else echo "Error: " , mysql_error();
     mysql_close($conn);