如何使用AJAX和PHP将数据添加到sql db中

如何使用AJAX和PHP将数据添加到sql db中,php,ajax,Php,Ajax,我有两个输入字段“User”和“Comment”,我希望使用AJAX异步保存用户输入,这样就不会刷新。到目前为止,我已经让它添加一个新行到数据库中,但由于某种原因,它是空的。我认为原因是我没有正确地附加值 HTML(JS位于头标记之间): PHP: 您的输入ID是用户名,但您的目标是用户 改为: var usr = document.getElementById("userName").value; 您还使用ajax请求发送null,您应该发送数据: var params = "user="

我有两个输入字段“User”和“Comment”,我希望使用AJAX异步保存用户输入,这样就不会刷新。到目前为止,我已经让它添加一个新行到数据库中,但由于某种原因,它是空的。我认为原因是我没有正确地附加值

HTML(JS位于头标记之间):

PHP:


您的输入ID是
用户名
,但您的目标是
用户

改为:

var usr = document.getElementById("userName").value;
您还使用ajax请求发送
null
,您应该发送数据:

var params = "user=" + encodeURIComponent(usr) + "&comments=" + encodeURIComponent(cmnt);
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
ajaxRequest.send(params);
此外,还应包括内容类型标题-如上所述

最后,mysql_*库已被弃用,您应该使用PDO或MySQLi等现代API进行任何新的开发。因为您正在使用此库,所以需要为SQL注入转义post数据:

$user = mysql_real_escape_string($_POST['user']);
$comment = mysql_real_escape_string($_POST['comment']);
如果您使用现代API,您可以执行参数化查询,而不需要手动转义任何内容

刚才还注意到,请删除此行:

mysql_query($query, $con);

在此之前,您已经在该行上执行了查询。此行无效,将失败,它正试图使用第一个查询的结果资源执行另一个查询。

您的输入ID是
用户名
,但您的目标是
用户

改为:

var usr = document.getElementById("userName").value;
您还使用ajax请求发送
null
,您应该发送数据:

var params = "user=" + encodeURIComponent(usr) + "&comments=" + encodeURIComponent(cmnt);
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
ajaxRequest.send(params);
此外,还应包括内容类型标题-如上所述

最后,mysql_*库已被弃用,您应该使用PDO或MySQLi等现代API进行任何新的开发。因为您正在使用此库,所以需要为SQL注入转义post数据:

$user = mysql_real_escape_string($_POST['user']);
$comment = mysql_real_escape_string($_POST['comment']);
如果您使用现代API,您可以执行参数化查询,而不需要手动转义任何内容

刚才还注意到,请删除此行:

mysql_query($query, $con);

在此之前,您已经在该行上执行了查询。这一行没有用,将会失败,它正在尝试使用第一个查询的结果资源执行另一个查询。

我将开始研究Jquery,它在javascript/Ajax部分有很大帮助

这里的问题是,您永远不会在AJAX调用中发送变量,您需要这样的东西:

ajaxRequest.send(postvariables);

我将开始研究Jquery,它在javascript/Ajax部分有很大帮助

这里的问题是,您永远不会在AJAX调用中发送变量,您需要这样的东西:

ajaxRequest.send(postvariables);

使用PDO else将行更改为$query=mysql_query(“插入内容(标题、文章)值(““$user.”、“$comment.”));您的ajax调用实际上没有发送任何内容。你正在写一篇文章,但实际上没有包含任何数据
.send(null)
是否已检查$POST以查看其是否可用。您是否输出了任何mysql错误?此外,您可能希望清理您的输入,即使用
mysql\u real\u escape\u string($user)
而不是在查询中仅使用$user。。。
$comment
也是如此。否则,您很快就会发现自己的数据库中有谁知道的内容;)使用PDO else将行更改为$query=mysql_query(“插入内容(标题、文章)值(““$user.”、“$comment.”));您的ajax调用实际上没有发送任何内容。你正在写一篇文章,但实际上没有包含任何数据
.send(null)
是否已检查$POST以查看其是否可用。您是否输出了任何mysql错误?此外,您可能希望清理您的输入,即使用
mysql\u real\u escape\u string($user)
而不是在查询中仅使用$user。。。
$comment
也是如此。否则,您很快就会发现自己的数据库中有谁知道的内容;)