php中的mysql长文本数据类型

时间:2012-08-13 05:33:11

标签: php mysql

我正在用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个字符,所以它停止工作。现在工作正常。

2 个答案:

答案 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();

?>

请记住始终清理您的输入。你永远不会知道某些输入包含单引号。