我正在用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个字符,所以它停止工作。现在工作正常。
答案 0 :(得分:0)
因为您使用 GET 方法提交表单? URL的限制大约为2000个字符。您应该使用 POST 。
答案 1 :(得分:0)
您的代码容易出现 SQL Injection 。使用 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();
?>
请记住始终清理您的输入。你永远不会知道某些输入包含单引号。