0

フィールドに入力して送信するフォームがあり、これらすべてが SQL データベースのテーブルに追加されます。これを行うために、すべての投稿値を取得してデータベースに挿入する短い PHP スクリプトがあります。送信されたフォームのフィールドの 1 つが 7000 文字を超えているため、送信できません。テキストが7k文字を超える説明ボックスをクリアすると送信されます。これらすべての詳細を手動でデータベースに追加すると、Web サイトに正常に表示されます。問題は、説明がこれほど長いことです。これを整理する方法はありますか、それとも文字数に制限はありますか? これは、insertpost.php のコードです。これは、フォームが送信されたときに呼び出されるページです

        $Title = $_POST['title'];
    $LinkTitle = $_POST['linktitle'];
    $Category = $_POST['category'];
    $SubCategory = $_POST['subcategory'];
    $MainPic = $_POST['mainpic'];
    $Description = $_POST['Description'];
    $Main = $_POST['maintext'];
    $Featured = $_POST['featured'];
    $thumb = $_POST['thumbnail'];

    include 'phpincludes/dbconnection.php';

    $insertSQL = "INSERT INTO Posts (ID,Title,LinkTitle,MainPicture,ViewCount,Description,Maintext,Type,Featured,category,thumbnail) 
    VALUES('','$Title','$LinkTitle','$MainPic','0','$Description','$Main','$SubCategory','$Featured','$Category','$thumb')";

    $db->query($insertSQL)
4

2 に答える 2

2

はい、制限があります。文字列http://php.net/stringの PHP マニュアルに記載されています。

注:文字列は最大 2GB まで可能です。

これには、PHP がそれだけ多くのメモリを使用できるようにしておく必要があります。オペレーティング システムに基づいて構成できるとは限りません。詳細については、私のブログ投稿の冒頭をお勧めします: Protocol of some PHP Memory Stretching Fun

于 2013-01-03T22:14:28.827 に答える
0

haskre が示唆するように、これは PHP の文字列の制限ですが、文字数が非常に大きく、7000 文字であっても問題は発生しません。また、MySQL のフィールド サイズにはより厳しい制限がありますが、エントリを直接 MySQL に保存でき、正常に表示されると述べたので、これは無視できます。

なぜ挿入されないのかを調べる必要があります。あなたの 7000 文字の中に、それを壊している文字があるのではないかと思います。おそらく、引用記号か、エスケープする必要がある何かです。

7000 文字でスクリプトを再度実行し、MySQL エラーを出力して、デバッグして解決できるようにします。

MySQL からエラーを出力するには、*mysql_error()* を使用できます。詳細については、php マニュアルを参照してください。

于 2013-01-03T22:24:47.813 に答える