【发布时间】:2025-12-12 21:35:01
【问题描述】:
我正在开发一个应用程序,用户可以在其中创建 HTML 模板并将它们保存到数据库中。模板由文本、图像等不同的组件组成。当我尝试使用 撇号 保存文本时> ' 它给了我mysql_error(很明显)。所以我尝试mysqli_real_escape_strings 来取消它。它有效,但我想取回保存的内容以用于编辑目的和撇号是使用\(斜杠)进行转义。因此内容在内部被修改,不再是可编辑的有效html,浏览器抛出语法错误。
我还尝试搜索其他功能以进行转义并遇到json_encode 但mysql不接受。
有人可以指出任何可以在 php 中执行此操作的函数吗?请建议任何可以为我执行任务的函数!
更新:
function saveContent(){
var $getContent = $('#mainWrap').clone();
$getContent.find('.textBox, .pictureBox').removeAttr('id');
var saveContent = $getContent.wrap('<div></div>').html();
console.log(saveContent);
var getBodyStyle=$('body').attr('style');
console.log('this is body style'+getBodyStyle);
var auto="auto";
$.ajax({
url:"auto_save.php",
type:"POST",
dataType:"text",
//data:"txtComp="+saveContent+"&auto="+auto+"&pageId="+pageId+"&webId="+webId+"&userId="+userId+"&bodyStyle="+getBodyStyle,
data: {txtComp: saveContent, auto: auto, pageId: pageId,webId:webId,userId:userId,bodyStyle:getBodyStyle}
});
}
我在auto_save.php 中添加了mysql_real_escape_string。现在,当我从 DB 取回它时,我必须将它传递给这样的 javascript 变量。
var getSavedContent = <?php echo json_encode($IdLessContent); ?>;
这会是个问题吗?
【问题讨论】:
-
mysqli_real_escape_string转义数据以便可以在查询中使用,它不会影响表中存储的内容。检查您的magic_quotes_gpc设置并禁用它,这可能会导致错误 -
是的,你根本不想反转
mysqli_real_escape_string。您的问题出在其他地方。 -
你不需要使用一个。您应该只在将某些内容放入 MySQL 查询之前使用 mysql_escape_string。当数据从数据库中返回时,它们将保持原始形式。
-
正如其他人所说,您不需要“反转”
mysqli_real_escape_string。如果您使用得当,那么从数据库中取回数据将不会包含转义字符。如果您保存的数据库字符串中确实有转义字符,那么您需要修复保存到数据库的方式,而不是在之后尝试扭转损坏。