我有一些javascript代码可以获取两个html表单输入字段的值。我转义了值以允许用户输入特殊字符,然后将它们放入一个字符串化然后发布的数组中。
$(document).ready(function() {
$("#submit").click(function() {
var BuilderName = escape($('[name=BuilderName]').val());
var OwnersName = escape($('[name=OwnersName]').val());
var arraydata = [BuilderName, OwnersName];
$.post("DCF_Update_Query.php", {
data: JSON.stringify(arraydata)
}, function() {
alert('Successful');
}).fail(function() {
alert('Failed');
});
});
});
在我的PHP文件中,我检索并解码数组并将其插入我的数据库。
$data = json_decode($_POST['data']);
mysqli_query($conn,"INSERT INTO dcf (BuilderName, OwnersName)
VALUES ('$data[0]','$data[1]')");
我的问题是转义字符作为%26
,%27
等进入数据库。如何取消转义这些字符,然后使用{{1}重新转义它们}。另外,我听说mysqli_real_escape_string()
会自动转义特殊字符。如果是这种情况,那我甚至需要用json_decode()
来逃避它们吗?我非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
尝试通过urldecode函数传递$ data变量的内容:
$data = urldecode(json_decode($_POST['data']));
答案 1 :(得分:0)
你真的,真的,真的需要一个准备好的声明。不需要逃脱
$prep = $conn->prepare("INSERT INTO dcf (BuilderName, OwnersName) VALUES (?, ?)");
$prep->bind_param('ss', $data[0], $data[1]);
$prep->execute();