MySQL更新了大量的html内容问题

时间:2011-10-10 13:18:42

标签: php mysql html

我已经通过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 "}";  
}

?>

2 个答案:

答案 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中