我已经通过Ajax为我的内容管理系统创建了自动保存。有问题。问题是,当我在我的本地服务器上测试时,php端很容易更新大块数据但是当我在我的webhost上测试它时,我看到,如果更新的内容是一个大数据,那么php不会t在第一次尝试时更新表行,仅在第二次尝试后更新。有什么建议吗?如何处理这个问题?
PHP Side
<?php
session_start();
require '../../core/includes/common.php';
$err=array();
$name=filter($_POST['name'],$db);
$id=$db->escape_string($_POST['id']);
$title=filter($_POST['title'], $db);
$parentcheck=$db->escape_string($_POST['parentcheck']);
if(isset ($_POST['parent'])) $parent=$db->escape_string($_POST['parent']);
else $parent=$parentcheck;
$menu=$db->escape_string($_POST['menu']);
$content = html($_POST['content'], $db);
if (!isset($content)) die('error');
$result=$db->query("UPDATE pages AS p, menu AS m SET m.parent='$parent', m.name='$name', m.showinmenu='$menu', p.id='$id', p.title='$title', p.content='$content' WHERE m.id='$id' AND p.id=m.id") or die($db->error);
if ($result){
echo "{";
echo '"msg": "Success" ';
echo "}";
}
else{
echo "{";
echo
'"err": "Error"';
echo "}";
}
?>
答案 0 :(得分:0)
您的代码看起来可能存在大量潜在错误,此示例应仅显示您可以执行的操作,以便始终返回可能采用您的AJAX请求可以处理的格式的内容:< / p>
您正在混合两种类型的错误处理:立即死亡并将您的操作结果报告给AJAX。您应该以另一种方式执行或,这一方式总是报告:
<?php
session_start();
require '../../core/includes/common.php';
...
if (!isset($content)) die('{"err": "No content"}'); // This will never happen BTW.
$result = $db->query("UPDATE pages AS p, menu AS m SET m.parent='$parent', m.name='$name', m.showinmenu='$menu', p.id='$id', p.title='$title', p.content='$content' WHERE m.id='$id' AND p.id=m.id");
if ($result)
{
echo '{"msg": "Success"'}';
}
else
{
echo '{"err": "Error"}';
}
?>
答案 1 :(得分:0)
你可以做这样的事情,解析html内容只针对重要的内容,即div而不是整个页面,Mysql文本数据类型支持2GB,但是不能安全地重载mysql。
想法1 您是否可以将HTML内容保存在XML上,并将链接与Mysql列中的节点一起引用,以便AJAX选择xml和节点来动态显示数据。
想法2 Gzip内容并存储在Mysql中