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

此代码能够保存小长度的文本,但不是很大。该POST字段的数据类型是长文本。此外,如果我通过 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
$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 回答
0

我建议你使用 mysqli_stmt::send_long_data :http ://php.net/manual/en/mysqli-stmt.send-long-data.php 。手册/评论中有一些很好的例子。

于 2011-05-30T12:40:27.480 回答