-1

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

4

2 回答 2

0

因为您使用GET方法提交表单?它的 URL 限制为大约 2000 个字符。您应该改用POST

于 2012-08-13T05:45:25.760 回答
0

您的代码容易发生SQL 注入。使用PHP PDOMYSQLi

使用 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();

?>

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

于 2012-08-13T05:50:42.760 回答