我在使用php中的INSERT
查询插入长文本(大约9000个字符)时遇到问题。我已经测试过更改列类型(TEXT, MEDIUMTEXT,LONGTEXT)
,甚至认为TEXT类型应该为9000个字符做。
还使用没有任何特殊字符或引号的文本进行测试。
我打印我的查询并且看起来不错,所以我复制并粘贴到phpMyAdmin并正确插入行。所以当我尝试从我的php类中插入时,问题就出现了。
我测试了一个较小的文本,这似乎工作正常。 我真的需要解决这个问题。如果有人有解决方案,请告诉我。 谢谢!
答案 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_packet:
有关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字段中