【问题标题】:Why i cant save a long text on my MySQL database?为什么我不能在我的 MySQL 数据库中保存长文本?
【发布时间】:2012-02-10 08:57:45
【问题描述】:

我试图将我的用户使用 Web 表单输入并使用 php 传递到服务器的长文本(大约 2500 个字符)保存到我的数据库中。

当我查看 phpmyadmin 时,文本会被裁剪。我如何配置我的表格以获得完整的文本?这是我的表配置:

CREATE TABLE `extra_879` (
  `id` bigint(20) NOT NULL auto_increment,
  `id_user` bigint(20) NOT NULL,
  `title` varchar(300) NOT NULL,
  `content` varchar(3000) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id_user` (`id_user`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

查看限制为 3000 个字符的字段 content,但文本总是在 690 个字符 处被裁剪。感谢您的帮助!

编辑:我找到了问题,但我不知道如何解决。查询总是在同一个字符中得到裁剪,一个特殊的字符:ù

EDIT 2:这是裁剪后的查询:

INSERT INTO extra_879 (id,id_user,title,content) VALUES (NULL,'1','Informazione Extra','
Riconoscimenti
Laurea di ingegneria presa a le 22 anni e in il terso posto della promozione
Diploma analista di sistemi ottenuto il rating massimo 20/20, primo posto della promozione.
Borsa di Studio (offerta dal Ministero Esteri Italiano) vinta nel 2010 (Valutazione del territorio attraverso le nueve tecnologie)
Pubblicazione di paper; Stima del RCS della nave CCGS radar sulla base dei risultati di H. Leong e H. Wilson. http://www.ing.uc.edu.vek-azozayalarchivospdf/PAPER-Sarmiento.pdf
Tesi di laurea: PROGETTAZIONE E REALIZZAZIONE DI UN SIS-TEMA DI TELEMETRIA GSM PER IL CONTROLLO DELLO STATO DI TRANSITO VEICOLARE E CLIMA (ottenuto il punteggio pi')

只有当 (ottenuto il punteggio più alto) 短语,当 ù 出现时,它才会被裁剪......

编辑 3:我使用 jquery + ajax 发送查询

$.ajax({type: "POST",   url: "handler.php", data: "e_text="+ $('#e_text').val() + "&e_title="+ $('#extra_title').val(),

【问题讨论】:

  • 您要在此处插入什么文本?向我们展示您的数据查询。
  • @SergioTulentsev 查询不是问题,我已经看过了,是数据库配置中正在裁剪文本的东西
  • 您是否尝试过使用 MySQL Workbench 运行查询?
  • 请检查我最近所做的编辑
  • 请添加更多代码。从哪里调用 INSERT SQL?插入内容字段的数据来自哪里?

标签: mysql sql


【解决方案1】:

回答您更新的问题:

您(显然)正在尝试插入 unicode 文本。并且您的表的字符集设置为latin1。这不会飞。

将表格字符集更改为 utf-8。

ALTER TABLE extra_879 CONVERT TO CHARACTER SET utf8;

更多信息here.

【讨论】:

  • 考虑到问题不再是表,因为当出现特殊字符时,查询会被裁剪......
  • 我仍然认为它是编码。检查您与数据库的连接的编码。
【解决方案2】:

尝试将varchar(3000) 更改为text(或longtext

【讨论】:

    【解决方案3】:

    尝试将表格字符集更改为支持特殊字符的字符集...

    【讨论】:

      【解决方案4】:

      如果查询在字符 ù 处被裁剪,那么您可能必须将该字符替换为它的转义等效字符。

      【讨论】:

        【解决方案5】:

        似乎没有理由裁剪内容。我尝试使用特殊的“ù”字符运行下面的 INSERT 语句,它运行成功。

        INSERT INTO extra_879 (id,id_user,title,content) VALUES (NULL,'1','Informazione Extra','
        Riconoscimenti
        Laurea di ingegneria presa a le 22 anni e in il terso posto della promozione
        Diploma analista di sistemi ottenuto il rating massimo 20/20, primo posto della promozione.
        Borsa di Studio (offerta dal Ministero Esteri Italiano) vinta nel 2010 (Valutazione del territorio attraverso le nueve tecnologie)
        Pubblicazione di paper; Stima del RCS della nave CCGS radar sulla base dei risultati di H. Leong e H. Wilson. http://www.ing.uc.edu.vek-azozayalarchivospdf/PAPER-Sarmiento.pdf
        Tesi di laurea: PROGETTAZIONE E REALIZZAZIONE DI UN SIS-TEMA DI TELEMETRIA GSM PER IL CONTROLLO DELLO STATO DI TRANSITO VEICOLARE E CLIMA (ottenuto il punteggio più alto')
        

        您在 EDIT 2 中提到的查询是什么?你从哪里打印的?如果该查询实际上在后端运行,它将始终插入裁剪的文本,因为它本身不包含全文 - 它缺少“ù”字符及其后面的所有内容。因此,假设这是实际查询,裁剪似乎发生在其他地方。

        我不确定如何在 AJAX 中完成发布请求,但数据是否在 URL 中传递?如果是,我建议您在发送数据之前进行 URL 编码。

        【讨论】:

          【解决方案6】:

          已经解决了,是jquery的问题。你可以在这里查看答案:TinyMCE + Jquery + PHP + AJAX Special chars issue

          【讨论】:

            猜你喜欢
            • 2012-07-05
            • 2022-01-18
            • 1970-01-01
            • 2012-12-19
            • 1970-01-01
            • 2020-08-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-12
            相关资源
            最近更新 更多