0

私は年齢を探していて、この正確な問題を見つけることができませんが、問題があれば、遠慮なく正しい方向に向けてください。

簡単な説明:TEXTAREAが記載されたページがあります。このTEXTAREAは、クライアントのWebサイトのホームページを編集するために使用される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を使用してエラーなしで手動でフィールドを増やしました。-TEXTAREAが512バイト未満の場合に機能するため、(私が知る限り)AJAX呼び出しではありません-照合(私は考えていません:私はそれを設定しlatin1_general_ciて試しましたがlatin1_bin、いくつかのUFTのもの)

最後の注意:呼び出しのため 、フィールドの実際のデータベースサイズはhomeTopLeft512バイトより大きくする必要があり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 に答える