我有一个表单,使用JQuery,AJAX和PHP将其提交到数据库。问题是,每当我单击表单的submit
按钮时,JavaScript警报就会说记录(表单中的数据)已成功记录(到数据库)。然后我会检查我的数据库但是没有记录数据,使数据库为空并且根本没有变化。我的问题是,脚本有问题吗?或者使用PHP代码?
这里是脚本addnew.js
:
$(document).ready(function() {
$("#submit").click(function() {
var transMonth = $("#transMonth").val();
var transDay = $("#transDay").val();
var transYear = $("#transYear").val();
var voucherNum = $("#voucherNum").val();
var expType = $("#expType").val();
var acctsPayable = $("#acctsPayable").val();
var amount = $("#amount").val();
var dataString = 'transMonth1='+ transMonth + 'transDay1='+ transDay + 'transYear1='+ transYear + 'voucherNum1='+ voucherNum + 'expType1='+ expType + 'acctsPayable1='+ acctsPayable + 'amount1='+ amount;
if(voucherNum=='') {
alert("Please fill a valid voucher number.");
}
else {
$.ajax ({
type: "POST",
url: "addnew.php",
data: dataString,
cache: false,
success: function(result) {
alert(result);
}
});
}
return false;
});
});
这里是PHP代码addnew.php
:
<?php
$connection = mysql_connect("localhost", "root", "");
$db = mysql_select_db("mydb", $connection);
//fetch values
$transMonth2 = $_POST['transMonth1'];
$transDay2 = $_POST['transDay1'];
$transYear2 = $_POST['transYear1'];
$voucherNum2 = $_POST['voucherNum1'];
$expType2 = $_POST['expType1'];
$acctsPayable2 = $_POST['acctsPayable1'];
$amount2 = $_POST['amount1'];
//query
$query = mysql_query("insert into anotherSample(transMonth, transDay, transYear, voucherNum, expenseType, acctPayable, amount) values ('$transMonth2', '$transDay2', '$transYear2', '$voucherNum2', '$expType2', 'acctsPayable2', '$amount2')");
echo "Record added successfully";
mysql_close($connection);
答案 0 :(得分:1)
您应该检查返回的结果。您可以通过以下代码执行此操作:
$result = mysql_query("insert into anotherSample(transMonth, transDay, transMonth, transYear, voucherNum, expenseType, acctPayable, amount) values ('$transMonth2', '$transDay2', '$transYear2', '$voucherNum2', '$expType2', 'acctsPayable2', '$amount2')");
if (!$result) {
die('Invalid query: ' . mysql_error()); // only for development, in production you shouldn't print error to client!
}
echo "Record added successfully";
mysql_close($connection);
PS。另外,我建议你阅读有关SQL注入的内容,因为你的代码容易受到攻击。
答案 1 :(得分:1)
我认为dataString
中的addnew.js
应为transMonth1='+ transMonth + '&transDay1='+ transDay + '&transYear1='...
,
否则$transDay2
,$transYear2
..将为null
,如果您在mysql中设置transDay
或更多NOT NULL
,则会出现mysql错误。 :)
答案 2 :(得分:1)
我在insert语句中看到一个问题,插入到anotherSample(transMonth,transDay,transMonth,transYear,....)值('$ transMonth2','$ transDay2','$ transYear2,.....) 'transMonth'重复两次,八列重复七次。
答案 3 :(得分:1)
在你的addnew.js文件中,你应该在每个键/值对之间使用&符号(&amp;),如下所示:
var dataString = 'transMonth1='+ transMonth + '&transDay1='+ transDay + '&transYear1='+ transYear + '&voucherNum1='+ voucherNum + '&expType1='+ expType + '&acctsPayable1='+ acctsPayable + '&amount1='+ amount;
这样,当您在addnew.php文件中读取每个变量时,您将确保每个变量都有一个值。
答案 4 :(得分:0)
检查addnew.php
和echo mysql_error($connection)
检查是否发生了mysql错误。