Php 使用mysqli保存contentEditable div中的数据
我正在尝试将contentEditable div中的数据保存到mySql数据库。但似乎“+”符号不能存储在DB中。这是正确的概念还是我遗漏了什么 index.phpPhp 使用mysqli保存contentEditable div中的数据,php,jquery,mysql,mysqli,contenteditable,Php,Jquery,Mysql,Mysqli,Contenteditable,我正在尝试将contentEditable div中的数据保存到mySql数据库。但似乎“+”符号不能存储在DB中。这是正确的概念还是我遗漏了什么 index.php <div id="la_sent" contentEditable=true></div> <button class="saveChanges">Save changes</button> ajax.php $type = $_POST['iid']; $content = $_
<div id="la_sent" contentEditable=true></div>
<button class="saveChanges">Save changes</button>
ajax.php
$type = $_POST['iid'];
$content = $_POST['content'];
$mysqli=connect_database(); //connection to database
$stmt = $mysqli->prepare('UPDATE email_structure SET content = ? WHERE type = ?');
$stmt->bind_param('ss', $content, $type);
$ress = $stmt->execute();
$stmt->close();
$mysqli->close();
echo "OK";
例如:如果我在div元素字符串“a+b+c”中写入,它会在DB字符串“a+b+c”中添加。知道为什么吗?为了安全起见,在将文本插入数据库(搜索、存储等)之前,您应该始终转义文本。要执行此操作,请参阅php的
mysqli\u real\u escape\u string
。即使您正在使用准备好的语句,也应该转义字符
如果这确实是个问题,您可以用另一个字符替换
+
,然后在从DB检索时将其替换回加号在默认情况下被替换为空格,因此您必须首先对它们进行编码
是用javascript实现的一种方法
因此,在将script.js添加到datUrl
之前,编辑script.js以通过encodeURIComponent
传递content
变量应该可以做到这一点
$(document).ready(function(){
$( ".saveChanges" ).click(function() {
content = $('#la_sent').html();
dataUrl = "iid=1&content="+encodeURIComponent(content); //encode content variable
$.ajax({
url:"ajax.php",
type:"POST",
data:dataUrl,
success:function(data){
...
}});
});
});
呵呵?这叫什么<代码>更新电子邮件\u结构集内容=?其中type=?
是一个预先准备好的语句。这并不能解决这里的问题。我是说,即使他使用的是预先准备好的语句,他仍然应该避免使用字符Swall,用其他字符替换symbol+不是一个干净的解决方案。好吧,根据您的数据,您可以做很多事情:将其转换为base64,对其进行加密,但这些语句的速度要慢得多,不需要转义输入。我将其更改为GET,结果仍然相同。默认情况下,加号替换为空格。首先尝试将javascript中的content
变量传递给用户dataUrl=“iid=1&content=“+encodeURIComponent(content)代码>@Jeribo非常感谢!这就解决了:)@Jeribo我认为答案最适合标记为已解决;-)干得好,我自己也是个服务器端的好人。TBH,我在很长时间的缺席后正在学习JS的东西,我从这个答案中学到了东西;干得好作为旁注:这肯定是他们使用jQuery造成的问题。如果OP没有使用它,他们的查询就会成功。@Fred ii-我理解。当然更有趣的服务器端:-)我不认为问题出在jQuery的使用上,因为如果我查看原始数据(file\u get\u contents(“php://input)我可以在URL中看到加号。只是一些时髦的业务服务器端我用事先准备好的语句在我这方面进行了测试,结果证明一切正常,不管怎样在更新中对我来说都是如此。
$(document).ready(function(){
$( ".saveChanges" ).click(function() {
content = $('#la_sent').html();
dataUrl = "iid=1&content="+encodeURIComponent(content); //encode content variable
$.ajax({
url:"ajax.php",
type:"POST",
data:dataUrl,
success:function(data){
...
}});
});
});