在数据库列MYSQL PHP中插入长文本时出现问题

时间:2011-02-17 11:42:23

标签: php mysql

我在使用php中的INSERT查询插入长文本(大约9000个字符)时遇到问题。我已经测试过更改列类型(TEXT, MEDIUMTEXT,LONGTEXT),甚至认为TEXT类型应该为9000个字符做。 还使用没有任何特殊字符或引号的文本进行测试。

我打印我的查询并且看起来不错,所以我复制并粘贴到phpMyAdmin并正确插入行。所以当我尝试从我的php类中插入时,问题就出现了。

我测试了一个较小的文本,这似乎工作正常。 我真的需要解决这个问题。如果有人有解决方案,请告诉我。 谢谢!

4 个答案:

答案 0 :(得分:1)

我还没有发现插入我的长文本有什么问题,但是我找到了一个解决方法来扭转它,它不是很干净但至少它会起作用,直到我找到真正的问题,以防万一任何人都有同样的问题,这就是我所做的。

在1000个字符的和平中拆分文本,执行我的INSERT并更新数据库中的文本字段,添加文本的和平,所以代码:

$textArray = str_split($text,1000);

foreach($textArray as $t){     $model = new Article_Model_UpdateText($id,$t); }

Article_Model_UpdateText中的查询如下所示:

"UPDATE mg_articles SET text = CONCAT (text, '".$text."') WHERE idArticle = ".$id.";";

希望这有助于某人,感谢您的所有回复。

答案 1 :(得分:0)

尝试使用mysql中的数据类型BLOB或LONGBLOB。

它会完成你的工作。

答案 2 :(得分:0)

我的水晶球暗示问题可能与max_allowed_pa​​cket:

有关

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet

(但这只是一个盲目的镜头。)

答案 3 :(得分:0)

您应该使用mysqli_real_escape_string来存储长文本...它就像

$variable= mysqli_real_escape_string(connection_variable,user input long text);

现在您可以通过插入查询将$变量存储在数据库中,您应该将$ variable存储在数据库的longtext字段中