7

PHPを介してMysqlテーブルに大量のテキストを挿入するhtmlフォーム(実際にはエディター-TinyMCE)があるとします。

私は次のことを知りたいです:

Mysql列にTINYTEXTデータ型がある場合-ユーザーが255バイトを超えるテキストをMysqlテーブルに入れようとするとどうなりますか?

アプリケーションは最初の255バイトを保存し、残りを「カットオフ」しますか?または、Mysqlテーブルに何も保存されず、mysqlは警告を発行しますか?または上記のどれも?

実際、私が望んでいることと意図していることは次のとおりです。Mysqlの列データ型を最大64 KBのテキストを保持できるTEXTデータ型に設定して、ユーザーフォーム入力のサイズを制限します。ユーザーからデータベースに渡されるテキストの量を制限して、ユーザーが一度にサーバーに大量のデータを送信できないようにします。

したがって、基本的に、ユーザーがmysqlテーブルのTEXTデータ型を想定して、65535バイトよりも多くのテキストをTinyMCEエディターに入力した場合に何が起こるかを知りたいと思います。

4

3 に答える 3

3

MySQLは、デフォルトでは、データが長すぎる場合はデータを切り捨て、警告を送信します。

SHOW WARNINGS;
Data truncated for foo ..

明確にするために、データ保存されます、大きすぎる部分が失われます。

于 2012-09-13T21:09:11.190 に答える
1

デフォルトのmysql構成は、値がテーブルフィールド定義の最大サイズよりも大きい場合にデータを切り捨てます。これにより、非ブロッキング警告が生成されます。

ブロッキングエラーが必要な場合は、sql_modeを次のように設定する必要があります。STRICT_ALL_TABLES

dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_strict_all_tables

IMHOの最善の方法は、アプリケーションソフトウェアを介してこのエラーを管理することです。

お役に立てれば

于 2012-09-13T21:10:56.190 に答える
0

MySQLのTEXTフィールドに入力するデータが多すぎると、とにかく行が挿入されますが、そのフィールドは最大長に切り捨てられ、警告が発行されます。

MySQLが行の追加を阻止したとしても、ユーザーが入力できるデータの長さを制限する良い方法ではありません。PHPでPOSTされた文字列の長さを確認し、長すぎる場合はクエリをまったく実行しないでください。おそらく、データが入力されなかった理由をユーザーに伝えてください。

これに加えて、ユーザーがクライアント側で入力しすぎる文字を防ぐことができます(ただし、誰かがクライアント側の制限をバイパスする可能性があるため、常にサーバー側のチェックも行う必要があります)。TinyMCEでこれを行う組み込みの方法はないようですが、コールバックを作成することで可能です。tinyMCEの文字数を制限する

于 2012-09-13T21:10:26.250 に答える