Php 如果超过512字节,TextArea不会保存到mySQL

Php 如果超过512字节,TextArea不会保存到mySQL,php,mysql,forms,textarea,html-entities,Php,Mysql,Forms,Textarea,Html Entities,我已经找了很久了,找不到这个精确的问题,但是如果找到了,请随意给我指出正确的方向 简单描述:有一个页面上有一个文本区域。此文本区域用于接受HTML,因为它用于编辑客户网站的主页 目的是将这个文本区域保存到一个非常简单的mySQL表中 问题:问题是如果TEXTAREA超过512个字符,则会将无内容保存到数据库字段。在那下面它可以很好地储存 代码如下: $homeTopLeft = addslashes(htmlentities($_GET['homeTopLeft'], ENT_QUOTES |

我已经找了很久了,找不到这个精确的问题,但是如果找到了,请随意给我指出正确的方向

简单描述:有一个页面上有一个文本区域。此文本区域用于接受HTML,因为它用于编辑客户网站的主页

目的是将这个文本区域保存到一个非常简单的mySQL表中

问题:问题是如果TEXTAREA超过512个字符,则会将无内容保存到数据库字段。在那下面它可以很好地储存

代码如下:

$homeTopLeft = addslashes(htmlentities($_GET['homeTopLeft'], ENT_QUOTES | ENT_IGNORE, "UTF-8"));
$homeNews    = addslashes(htmlentities($_GET['homeNews'], ENT_QUOTES | ENT_IGNORE, "UTF-8"));

mysql_login();

$query = "UPDATE cmsData SET homeTopLeft='$homeTopLeft', homeNews='$homeNews', lastUpdated=NOW() WHERE entry=1";
$result = mysql_query($query) or die(reportError('Unable to save new CMS data'));
if (mysql_affected_rows() > 0) {
    echo '<p class="ok">Pages Successfully Updated!</p>';
    echo '<p style="border:1px dashed #ccc;">homeTopLeft = ' . $homeTopLeft . '</p>';
} else {
    echo '<p class="err">Unable to update the home page</p>';
}
$homeTopLeft=addslashes(htmlentities($_GET['homeTopLeft'],ENT_引号| ENT_IGNORE,“UTF-8”);
$homeNews=addslashes(htmlentities($_GET['homeNews'],ENT|u QUOTES,| ENT|u IGNORE,“UTF-8”);
mysql_login();
$query=“UPDATE cmsData SET homeTopLeft='$homeTopLeft',homeNews='$homeNews',lastUpdated=NOW(),其中entry=1”;
$result=mysql_query($query)或die(reportError(‘无法保存新的CMS数据’);
如果(mysql\u受影响的\u行()>0){
echo“

页面已成功更新!

”; homeTopLeft=.$homeTopLeft.

”; }否则{ echo“

无法更新主页; }

我目前使用$\u GET方法,因为我实际上是通过AJAX调用函数的,它在512个字符以下工作正常

它不是什么 -这不是mySQL字段大小:它的数据类型是文本,我通过phpMyAdmin手动增加了字段大小,没有错误。 -它不是(据我所知)AJAX调用,因为如果TEXTAREA小于512字节,它就可以工作 -排序规则(我不认为:我将其设置为
latin1\u general\u ci
,并尝试了
latin1\u bin
和一些UFT)

最后一个音符 由于调用了
htmlentities
,字段
homeTopLeft
的实际数据库大小必须大于512字节

我还应该补充一点,无论我只是使用纯
TEXTAREA
还是
tinyMCE
富文本编辑器,都会发生这种情况


如果您能提供任何帮助,我们将不胜感激。谢谢

GET请求有大小限制。对于像这样大的事情,使用POST,GET请求有大小限制。对于像这样的大型事情,使用POST

如果您在ajax中使用GET方法,您无法按照自己的意愿将如此多的数据传递给服务器,请将其更改为POST,一切都会正常工作


在这里,您可以找到关于这一点的简短概述:

如果您在ajax中使用GET方法,您无法按照自己的意愿将如此多的数据传递给服务器,请将其更改为POST,一切都会正常工作


在这里您可以找到一个简短的概述:

在addslashes(htmlentities())上使用mysql\u real\u escape\u string。htmlentities通常不应进入数据库。除此之外,您的数据库应该对表字符集使用UTF8,因此,如果您使用外语字符,那么对它们进行排序等将是正确的


如果相应字段接受文本,则大于512字节(!)的文本没有已知问题。

在addslashes(htmlentities())上使用mysql\u real\u escape\u字符串。htmlentities通常不应进入数据库。除此之外,您的数据库应该对表字符集使用UTF8,因此,如果您使用外语字符,那么对它们进行排序等将是正确的


如果相应字段接受文本,则大于512字节(!)的文本没有已知问题。

只是一些建议:1)不应使用addslashes进行转义(您也可以在手册页上看到这一点)2)即使上一点的最佳替代方案是mysql_real_escape_string,在您的情况下,您也应该检查手册页,以查看是否建议切换到mysqli或PDO只是一些建议:1)您不应该使用addslashes进行转义(您也可以在手册页上看到这一点)2)即使上一点的最佳替代方案是mysql_real_escape_string,在您的情况下,您也应该检查手册页,查看是否建议切换到mysqli或PDO。我当前的AJAX调用是xmlhttp.open(“POST”),“/php bin/funcs_admin.php?pullIn=admin页面编辑器&action=save&homeTopLeft=“+topLeft+”&homeNews=”+家庭新闻,没错);-我如何更新它以将其更改为“POST”?非常感谢,这确实是个问题!现在一切似乎都在运转。非常感谢。我当前的AJAX调用是xmlhttp.open(“POST”,“/php bin/funcs_admin.php?pullIn=admin页面编辑器&action=save&homeTopLeft=“+topLeft+””&homeNews=“+homeNews,true”);-我如何更新它以将其更改为“POST”?非常感谢,这确实是个问题!现在一切似乎都在运转。非常感谢。
mysql\u real\u escape\u string
给了我一个错误,我想是因为我的主机服务器上启用了魔法引号(天知道为什么)。这个网站将由英国人运营,面向英国的英语使用者,所以当我们走到这一步的时候,我会遇到外语障碍!mysql\u real\u escape\u字符串不应该抱怨神奇的引号。a) 不管怎样,换个主人吧!:)b) 您的问题可能来自太旧的mysql服务器和/或php版本。这是我的猜测…是的,我计划与主机(我们是一个长期客户)交谈,看看他们是否会关闭它,因为这是一个背后的痛苦。
mysql\u real\u escape\u string
给了我一个错误,我想是因为主机服务器上启用了魔法引号(天知道为什么)。这个网站将由英国人运营,面向英国的英语使用者,所以当我们走到这一步的时候,我会遇到外语障碍!mysql\u real\u escape\u字符串不应该抱怨神奇的引号。a) 不管怎样,换个主人吧!:)b) 您的问题可能来自太旧的mysql服务器和/或php版本。这是我的猜测…是的,我计划与主持人(我们是一个长期客户)交谈,看看他们是否会关闭它,因为这是一个背后的痛苦。