繁体   English   中英

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;
});

userInfo.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);

index.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 =(“ INSERT INTO users VALUES('$ firstname','$ middlename','$ lastname')”);

改成

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

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

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

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

好的,根据您上面显示的内容,据我了解,问题出在此代码中

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

如果未指定要将值插入其中的字段,则必须在查询中完成这些字段

例如。 如果只想插入firstnamemiddlenamelastnamemiddlename在用户表中有5个字段。

 $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个值。

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

好吧,我终于明白了。

首先,最初我没有返回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);      

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM