0

我一直在寻找年龄,找不到这个精确的问题,但如果有的话,请随时为我指出正确的方向。

简单描述:有一个页面上有一个 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 < 512 字节时有效 - 排序规则(我不认为:我已将其设置为latin1_general_ci并尝试过latin1_bin一些 UFT 的)

最后说明由于调用 ,该字段的实际数据库大小homeTopLeft必须大于 512 字节。htmlentities

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

您能提供的任何帮助将不胜感激。谢谢!

4

3 回答 3

5

GET 请求有大小限制。对于诸如此类的大事,请使用 POST

于 2012-07-18T12:14:21.737 回答
1

如果您在 ajax 中使用 GET 方法,则无法将这么多数据传递给服务器,请将其更改为 POST,一切都会正常工作。

在这里你可以找到一个简短的概述:http: //www.boutell.com/newfaq/misc/urllength.html

于 2012-07-18T12:14:46.553 回答
0

在 addlashes(htmlentities()) 上使用 mysql_real_escape_string。htmlentities 通常不应进入数据库。除此之外,您的数据库应使用 UTF8 作为表字符集,因此如果您使用外语字符,排序等将是正确的。

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

于 2012-07-18T12:28:48.117 回答