>我在将表单数据提交到本地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);