-1

PHP mysql で自分のサイトの wap フォーラムを開発しています。現在、フォーラムの説明でlongtextデータ型を使用しています。ユーザーが 1500 文字を超える説明を入力すると、データベースに挿入されません。それを検索したところ、次のようなものが見つかりました。

TINYTEXT 256 bytes

TEXT 65,535 bytes ~64kb

MEDIUMTEXT 16,777,215 bytes ~16MB

LONGTEXT 4,294,967,295 bytes ~4GB

では、なぜ 1500 文字を超える説明が挿入されないのでしょうか。そして、このことの解決策は何ですか?

編集:挿入に使用されているコード(コメントから取得):

$sql1="
    INSERT INTO 
        forum_top
        (catID,forumN,forumDescr,forum_time,uID,forum_attach) 
        VALUES ($cat_idd,'$top_namee','$top_descri','$tmform',$n_u_id,'$newfilename')"; 
if (!mysql_query($sql1,$con)) { die('Error: ' . mysql_error()); }

$top_descri の由来:

 $top_descri =nl2br(mysql_real_escape_string($_POST['top_descri']));

私はそれを解決しました。説明の長さをチェックする関数を使用します。その関数の制限は1500文字であるため、動作しなくなりました。現在は正常に動作しています。

4

2 に答える 2

0

GETメソッドを使用してフォームを送信しているためですか?URL には約 2000 文字の制限があります。代わりにPOSTを使用する必要があります。

于 2012-08-13T05:45:25.760 に答える
0

あなたのコードはSQL インジェクションの傾向があります。PHP PDOまたはMYSQLiを使用します。

PDO の使用例:

<?php
$stmt = $dbh->prepare("INSERT INTO forum_top(catID, forumN, forumDescr, 
                                       forum_time, uID, forum_attach) 
                      VALUES (?, ?, ?, ?, ?, ?)");

$stmt->bindParam(1, $cat_idd);
$stmt->bindParam(2, $top_namee);
$stmt->bindParam(3, $top_descri);
$stmt->bindParam(4, $tmform);
$stmt->bindParam(5, $n_u_id);
$stmt->bindParam(6, $newfilename);

$stmt->execute();

?>

常に入力をサニタイズすることを忘れないでください。入力の一部に一重引用符が含まれていることは決してわかりません。

于 2012-08-13T05:50:42.760 に答える