4
$query="INSERT INTO `ARTICLES` (`TITLE`, `BY`, `IN`, `POST`) 
VALUES('". $title ."', '". $by ."', '". $in ."', '". $_POST['post'] ."')";

このコードは、短い長さのテキストを保存できますが、大きくは保存できません。フィールドのデータ型POSTはlongtextです。また、phpmyadminを介してデータを挿入すると、保存されます。

4

4 に答える 4

6

Felix klingのように、保存しようとするテキストに引用符が含まれている可能性があるため、投稿データをエスケープする必要があると言われていますが、クエリが適切に実行されなくなり、データベースに送信する前にエスケープしないことも大きなセキュリティリスクです.

$post = mysql_real_escape_string($_POST['post']);

$query="INSERT INTO `ARTICLES` (`TITLE`, `BY`, `IN`, `POST`) 
VALUES('". $title ."', '". $by ."', '". $in ."', '". $post ."')";

POSTまた、phpmyadmin で列をテキストに設定したことを確認してください。十分なスペースを用意しないと、データベースに保存されないためです。

于 2011-05-30T11:48:54.290 に答える
0

mysqli_stmt::send_long_data を使用することをお勧めします: http://php.net/manual/en/mysqli-stmt.send-long-data.php。マニュアル/コメントにいくつかの良い例があります。

于 2011-05-30T12:40:27.480 に答える
0
$query="INSERT INTO ARTICLES (TITLE, BY, IN, POST) VALUES('$title', '$by', '$in', '". $_POST['post'] ."')";

このクエリを使用し、PHPmyAdmin を使用してデータベース フィールドのプロパティを BLOB テキストに変更します。

大きなコンテンツを挿入する必要があるときに私のために働きます。

于 2011-05-30T11:48:22.373 に答える
0

データベースにデータを挿入するには、常にPreparedStatementを使用してください。ユーザーの入力を決して信用しないでください。

于 2011-05-30T11:51:50.653 に答える