我正在为使用post方法将输入值传递到执行相关mysql查询的php文件的站点编写一个相当基本的注释功能。
$ .ajax部分如下:
// AJAX URL ENCODING
$("#add").click(function() {
// POST COMMENT FORM VALUES
var ajaxOpts = {
type: "post",
url: "includes/addComment.php",
data: "&author=" + $("#author").find("input").val() + "&email=" + $("#email").find("input").val() + "&comment=" + $("#leaveComment").find("textarea").val() + "&parent=<?php echo $vid_id; ?>",
success: function(data) {
// IMMEDIATE DISPLAY
// Not relevant to this problem.
// CLEAR TEXTAREA FOR NEXT COMMENT
$("textarea").val('');
}
};
$.ajax(ajaxOpts);
});
这通过addcomment.php传递:
require('connection.php');
//get POST data
$name = mysql_real_escape_string($_POST["author"]);
$email = strtolower(md5(trim(mysql_real_escape_string($_POST["email"]))));
$comment = mysql_real_escape_string($_POST["comment"]);
$time = Date ('c');
$parent = trim(mysql_real_escape_string($_POST["parent"]));
//add new comment to database
mysql_query("INSERT INTO comments VALUES(' $name ',' $email ',' $comment ', ' $time ', ' $parent ')");
一切正常,除了mysql_query最终不会在我的数据库中插入任何值。经过一番挖掘,我发现了这一点:
因此,我假设我的查询不会继续进行,因为':'垃圾(?)数据会将所有内容都丢弃了吗?
我试图弄清楚这个错误的“:”来自何处,有人有什么想法吗?
附注-对于这个问题的长度,我深表歉意,我已尽力缩小了可能的罪魁祸首。
最佳答案
如果从&author前面删除&,会发生什么?
通常,第一个数据字段没有&
data: "&author="
也正如其他人提到的那样,这将是一个受欢迎的补充
or die (mysql_error())
在插入上命名数据库列通常是一个好习惯
否则,如果您更改表结构,就有可能会破坏插入语句。
insert into (colname1, colname2) values ('value1', 'value2')
关于php - 返回奇怪的POST数据垃圾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7252209/