我创建了一个表单,用于输入用户输入并插入数据库.但是我在插入日期时遇到了麻烦.
我使用jQuery和Ajax将值作为数据字符串传递给执行insert查询的PHP文档:
jQuery的/阿贾克斯:
$('.btn-add').click(function () {
if ($('.add-form').is(':hidden')) {
$('.add-form').slideDown(400);
$(this).children('i').fadeOut(100);
} else {
var title = $("#title").val();
var genres = $("#genres").val();
var languages = $("#languages").val();
var dev = $("#dev").val();
var date = $(".picker").next().val().split(".").reverse().join("-");;
// I used a date picker for this. It picks the date as "dd.mm.yyyy."
//and I had jquery convert it to "yyyy-mm-dd" for MysqL compatibility.
var dataString = 'title1=' + title + '&genres1=' + genres + '&languages1=' + languages + '&dev1=' + dev + '&date1=' + date;
if (title == '' || genres == '' || languages == '' || dev == '' || date == '') {
Materialize.toast('Please complete all the forms.', 4000);
} else {
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "PHP/add-game.PHP",
data: dataString,
cache: false,
success: function (result) {
tableLoad();
Materialize.toast(result, 4000);
$('.add-form').slideUp(400);
$('.btn-add').children('i').fadeIn(100);
}
});
}
}
});
附加game.PHP:
<?PHP
$conn = MysqLi_connect("localhost", "root", "****", "db-name");
$title = $_POST["title1"];
$genres = $_POST["genres1"];
$languages = $_POST["languages1"];
$dev = $_POST["dev1"];
$date = $_POST["date1"];
$sql = "INSERT INTO games (title, genres, languages, developer, release-date)
VALUES ('$title', '$genres', '$languages','$dev','$date')";
if ($conn->query($sql) === TRUE) {
echo "Success!";
} else {
echo "Something went wrong.";
}
$conn->close();
?>
现在,首先我尝试只传递前4个文本值的代码,没有日期,并且它工作正常:新行添加了输入信息和表刷新,但我似乎无法插入适当的日期.
我尝试使用.PHP文档中的错误消息回显$date,它以“yyyy-mm-dd”格式向我显示日期就好了.然而,仍然出现问题,我不知道它是什么.
编辑1:
这是数据库结构:
如您所见,日期格式很好. (2015年3月15日)
解决方法:
它看起来对我来说是正确的.
我会检查release-date列是否真的是DATE列.
并尝试在查询中对日期进行硬编码,以查看它是输入问题还是什么.
$sql = "INSERT INTO games (title, genres, languages, developer, release-date)
VALUES ('$title', '$genres', '$languages','$dev','2016-05-01')";
编辑:
我做了一些测试,这是因为columnt名称发布日期,因为它包含’ – ‘字符.尝试将coulmn名称更改为release_date或releaseate.否则你可以在查询中转义列名,但是如果可以的话我会避免这种情况,因为下次你必须构建一个查询时它会导致同样的错误并且找出错误并不容易.
$sql = "INSERT INTO games (title, genres, languages, developer, `release-date`)
VALUES ('$title', '$genres', '$languages','$dev','$date')"
注意’与’不同’
我甚至没有在键盘上.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。