用于触发jQuery以获取HTML并保存到数据库的按钮

时间:2011-05-19 13:50:50

标签: php jquery mysql ajax

我有一些jQuery,当你点击保存按钮时,它会触发一个函数来获取匹配选择器的HTML并将HTML发布到save_report.php:

function saveReport() {
  $.post('save_report.php', function(data) {
    $('.report').html(data);
  });
}

$('.save').click(function () {
  saveReport();
});

在save_report.php中,我想知道如何将该字符串保存到我的数据库中。

$report = $_POST[''];  # <-- not sure how to post

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

mysql_query("INSERT INTO reports (id, report) VALUES('', $report) ")
  or die(mysql_error());

如何在php文件中检索POST值?

由于

3 个答案:

答案 0 :(得分:3)

这里有些错误...发布的代码实际上并不发布任何数据,而且post和html函数调用不正确。

所以,首先我将从.report选择器中获取html,并将其存储在变量中。然后我会发布它,提供一个变量名称'report'。我添加了一个简单的回调来警告Web服务器发回的内容,您可以删除或更改。

function saveReport() { 
  var data = $('.report').html();
  $.post('save_report.php', {'report':data}, function(response) { alert(response); }); 
}  

$('.save').click(function () { saveReport(); }); 

在你的PHP中,你会寻找$ _POST ['report'],这就是我命名所发布数据的方式。

您没有对任何输入进行清理,因此基本上任何随机黑客都可以通过SQL注入来接管整个数据库。获得$ _POST ['report']后,至少要通过mysql_real_escape_string()函数运行它。

答案 1 :(得分:1)

您很可能需要将jQuery代码更改为

function saveReport() {
   $.post('save_report.php', {report: $('.report').html(data)} );
}

和php到

$report = $_POST['report'];  **<-- not sure how to post**

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

mysql_query("INSERT INTO reports
(id, report) VALUES('', '".mysql_real_escape_string($report)."' ) ") 
or die(mysql_error()); 

答案 2 :(得分:1)

在将其放入插入查询之前,请不要忘记转义HTML。你正在做的事情有可能非常快地出错。我修改了你的save_report.php代码以适应Fosco的答案。我现在将'可选'$link参数传递给所有mysql_*函数,因为通常最好这样做。我还在INSERT查询中使用之前添加了一些值的转义;将$link参数传递给mysql_real_escape_string()函数非常重要,这样才能正确地转义值。

$report = $_POST['report'];

$link = mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database", $link) or die(mysql_error());

$report = mysql_real_escape_string($report, $link);

mysql_query("INSERT INTO reports (id, report) VALUES('', '{$report}')", $link)
  or die(mysql_error());