使用 mysqli 从 contentEditable div 保存数据
Save data from contentEditable div with mysqli
我正在尝试将数据从 contentEditable div 保存到 mySql 数据库。但似乎'+'符号不能存储在数据库中。这是正确的概念还是我遗漏了什么?
index.php
<div id="la_sent" contentEditable=true></div>
<button class="saveChanges">Save changes</button>
script.js
$(document).ready(function(){
$( ".saveChanges" ).click(function() {
content = $('#la_sent').html();
dataUrl = "iid=1&content="+content;
$.ajax({
url:"ajax.php",
type:"POST",
data:dataUrl,
success:function(data){
...
}});
});
});
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' 中写入,它会在数据库字符串 'a b c ' 中添加。知道为什么吗?
为了安全起见,在将文本插入数据库之前(使用搜索、存储等),您应该始终对文本进行转义。请参阅 php 的 mysqli_real_escape_string
来执行此操作。即使您使用的是准备好的语句,您仍然应该对字符进行转义。
如果确实有问题,您可以将 +
替换为另一个字符,然后在从数据库中检索时将其替换回去
默认情况下,加号会被替换为空格,因此您必须先对它们进行编码。
encodeUriComponent 是 javascript
中的一种方法
因此编辑您的 script.js
以通过 encodeURIComponent
传递 content
变量,然后再将其附加到 datUrl
应该可以解决问题。
$(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){
...
}});
});
});
我正在尝试将数据从 contentEditable div 保存到 mySql 数据库。但似乎'+'符号不能存储在数据库中。这是正确的概念还是我遗漏了什么?
index.php
<div id="la_sent" contentEditable=true></div>
<button class="saveChanges">Save changes</button>
script.js
$(document).ready(function(){
$( ".saveChanges" ).click(function() {
content = $('#la_sent').html();
dataUrl = "iid=1&content="+content;
$.ajax({
url:"ajax.php",
type:"POST",
data:dataUrl,
success:function(data){
...
}});
});
});
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' 中写入,它会在数据库字符串 'a b c ' 中添加。知道为什么吗?
为了安全起见,在将文本插入数据库之前(使用搜索、存储等),您应该始终对文本进行转义。请参阅 php 的 mysqli_real_escape_string
来执行此操作。即使您使用的是准备好的语句,您仍然应该对字符进行转义。
如果确实有问题,您可以将 +
替换为另一个字符,然后在从数据库中检索时将其替换回去
默认情况下,加号会被替换为空格,因此您必须先对它们进行编码。
encodeUriComponent 是 javascript
中的一种方法因此编辑您的 script.js
以通过 encodeURIComponent
传递 content
变量,然后再将其附加到 datUrl
应该可以解决问题。
$(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){
...
}});
});
});