如何通过client到server db mysql insert插入反斜杠

zd287kbt  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(198)

我有一个web客户机-我想确保在web客户机上输入的所有数据都保存到db(安全/干净)。我断断续续地读了好几篇关于这个问题的文章,但到目前为止,我只解决了我的部分目标。现在,我将javascript/jquery用于apachemysql 5.6。我可以安全地输入像“<>”/这样的数据,但不能输入\字符。它到达了服务器,但是当数据到达我的数据库时,\已经消失了。
我做错什么了?
网页摘要如下:

<head><meta charset="utf-8" /></head>
<body>
<form accept-charset="UTF-8">
</form>
</body>

我的javascript/jquery环境集类似于

formdata["summary"]="some text read from form from form";
var jsondata="data="+JSON.stringify(formdata);
$.ajax({ url: "/register.php", type: "GET", dataType: "json", data: jsondata, success: RegistrySuccess, error: RegistryFail });

我的php v5.6摘要:

header("content-type: application/json; charset=utf-8");
$jsondata=json_decode( rawurldecode($_REQUEST["data"]) ,true);

(我可以将$jsondata的输出转储到屏幕上,它将显示我的客户机表单数据,其中可能包括

"<b>123</b>" 
"town \ break"

我通过htmlentities()传递$jsondata。。。htmlentities()之后的输出示例:

address='address &lt;b&gt;123&lt;/b&gt;', 
town='town \ break'

然后执行mysql prepare,然后执行insert。所有东西都进去了,除了“\”不见了。。。

$QUERY="INSERT registry5 SET name='name',address='address &lt;b&gt;123&lt;/b&gt;',town='town \ break'";
$stmt = $DB->prepare($QUERY);
$stmt->execute();

我的表是用utf8字符集,innodb存储引擎定义的。
我遗漏了什么阻止我写反斜杠?我以为我已经用htmlentities和utf8实现了无故障数据存储。感谢大家的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题