我有一些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值?
由于
答案 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());