我在将某些字符从 PHP 保存到 MySql 数据库表时遇到了麻烦。我有一个所见即所得的编辑器,通过它我可以创建页面内容并将它们保存到数据库中。当我的代码中有“”或撇号时,html 文本不会保存到数据库中。以下是我的代码:
向服务器发送数据:
function SaveContent()
{
var content = CKEDITOR.instances.ContentEditor.getData();
content = content.replace(/"/g, "'");
var page = document.getElementById("hfpage").value;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
location.href=document.referrer;
}
}
//alert(content);
xmlhttp.open("GET","savecontent.php?content="+content+"&page="+page,true);
xmlhttp.send();
}
用于数据库保存的php代码:
//save content editted/added through the HTML editor
function SaveContent($page, $content, $user)
{
$con = $this->OpenConnection();
//first check if the content exists, if so do an update
$sql = "SELECT * FROM sitecontent WHERE Page = '" . $page . "'";
$content = mysql_real_escape_string($content);
$rowcount = mysqli_num_rows(mysqli_query($con,$sql));
if( $rowcount > 0 )
{
//run update
$sql = 'UPDATE `sitecontent` SET `Content`="' . $content . '", `UpdatedBy`="' . $user . '", `LastUpdated`= NOW() WHERE `Page` = "' . $page . '"';
$result = mysqli_query($con,$sql);
//echo $sql;
}
else
{
//run insert
$sql = 'INSERT INTO `sitecontent` (`Page`, `Content`, `LastUpdated`, `UpdatedBy`) VALUES ("' . $page . '","' . $content . '", NOW(),"'. $user . '")';
$result = mysqli_query($con,$sql);
}
}
请注意,我已经使用了“mysql_real_escape_string”,正如我在论坛上的一些帖子中看到的那样,但这并没有帮助。
感谢是否有人可以帮助我解决这个问题。