我一直在寻找年龄,找不到这个确切的问题,但如果有的话,请随时指出正确的方向。
简单描述:有一个页面上有TEXTAREA。这个TEXTAREA接受HTML,因为它用于编辑客户网站的主页。
目的是让这个TEXTAREA保存到一个非常简单的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>';
}
我目前有$ _GET方法,因为我实际上是通过AJAX调用该函数,在512个字符下工作正常。
什么不是
- 它不是mySQL字段大小:它的数据类型是TEXT,我通过phpMyAdmin手动增加了字段而没有错误。
- 这不是(据我所知)AJAX调用,因为如果TEXTAREA是&lt; 512字节
- 整理(我不认为:我将其设置为latin1_general_ci
并尝试latin1_bin
和部分UFT)
最终注释
由于homeTopLeft
调用,字段htmlentities
的实际数据库大小必须大于512字节。
我还应该补充一点,无论我是使用简单的TEXTAREA
还是tinyMCE
富文本编辑器,都会发生这种情况。
感谢您提供的任何帮助。谢谢!
答案 0 :(得分:5)
GET请求有一个大小限制。对于像这样的大事,请使用POST
答案 1 :(得分:1)
如果您在ajax中使用GET方法,则无法将如此多的数据传递给服务器,将其更改为POST,一切都会正常工作。
您可以在此处找到有关该内容的简短概述:http://www.boutell.com/newfaq/misc/urllength.html
答案 2 :(得分:0)
对addslashes使用mysql_real_escape_string(htmlentities())。 htmlentities通常不应该进入数据库。除此之外,您的数据库应该使用UTF8作为table-charset,因此如果您使用外语字符,排序等将是正确的。
如果相应的字段接受了文本,则大于512字节(!)的文本没有已知问题。