【发布时间】:2021-10-19 06:25:25
【问题描述】:
我在将长文本从表单保存到数据库时遇到问题。页面加载并返回而不保存或显示错误。短文本正在保存。代码如下:
HTML:
<textarea id="" name="text_01" style="width:80%; height:150px;">
</textarea>
PHP/SQL:
$_POST = filter_var($_POST, \FILTER_CALLBACK, ['options' => 'trim']);
if (isset($_POST['saveCover']) && !empty($_POST)) {
$data = $_POST;
if (empty($cover)) {
error_log("New Text insert. ");
$sql = "insert into tbl_text (id, text_01) values ($id, '".$data['text_01']."';
}
SQL(数据库):
CREATE TABLE `tbl_text` (
`id` int(11) NOT NULL,
`text_01` text,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Project Cover Pages';
【问题讨论】:
-
将您的表
text_01列类型TEXT更改为LONGTEXT -
TEXT数据类型可接受不超过 64kb。如果这还不够,那么使用更广泛的数据类型。 页面加载并返回而不保存或显示错误。正在保存短文本。 检查警告。此外 - 检查要插入的文本是否有必须转义的符号。 -
警告!您对SQL injection attacks 开放!阅读how to prevent SQL injection in PHP,使用带有绑定参数的准备好的语句,而不是将变量直接注入查询中。这不仅仅是安全问题。例如,如果您的数据包含单引号
',您的查询将中断。