PHP MySQL选择文本截断

PHP MySQL选择文本截断,php,sql,mysql,types,Php,Sql,Mysql,Types,我有一个MySQL表,其列“full_description”类型为“text”。 该列中有一个标准的lorem ipsum(加上单词END): Lorem ipsum dolor sit amet, 敬拜精英,塞德·多 临时劳动合同 多洛雷·麦格纳·阿利夸。最小值 veniam,quis nostrud实习 ullamco laboris nisi ut aliquip ex ea 康多康塞卡特。酒后驾车 多洛在伏鲁帕特的雷德亨德瑞特 你的福吉亚语是什么 无巴黎特许权。圣岛例外 非偶然的,必须

我有一个MySQL表,其列“full_description”类型为“text”。 该列中有一个标准的lorem ipsum(加上单词END):

Lorem ipsum dolor sit amet, 敬拜精英,塞德·多 临时劳动合同 多洛雷·麦格纳·阿利夸。最小值 veniam,quis nostrud实习 ullamco laboris nisi ut aliquip ex ea 康多康塞卡特。酒后驾车 多洛在伏鲁帕特的雷德亨德瑞特 你的福吉亚语是什么 无巴黎特许权。圣岛例外 非偶然的,必须的 在这件事上,我是罪有应得 动物是劳动。结束

然而,在php中对其进行选择时,它只检索到以下内容:

Lorem ipsum dolor sit amet, 敬拜精英,塞德·多 临时劳动合同 多洛雷·麦格纳·阿利夸。最小值 veniam,quis nostrud实习 ullamco laboris nisi ut aliquip ex ea 康多康塞卡特。酒后驾车 多洛一世

以下是检索它的php代码:

function getPostingDetails($posting_id){
        $getPosting = $this->PLAST->prepare('SELECT posting_id, poster_id, title, short_description, full_description FROM postings WHERE posting_id=?');
        $getPosting->bind_param('i',$posting_id);
        $getPosting->execute();
        $getPosting->bind_result($row['posting_id'],$row['poster_id'],$row['title'],$row['short_description'],$row['full_description']);
        $getPosting->fetch();
        $getPosting->close();
        return $row;        
    }
这是我得到的数组:

Array ( [posting_id] => 1 [poster_id] => 1 [title] => Test 1 [short_description] => This is a short description. [full_description] => Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor i )
其余的田地都很好。 我做错了什么?或者是否存在我不知道的限制SELECT语句的设置或功能?在MySQL中?在PHP mysqli中

谢谢

这是表格结构(根据要求):

CREATE TABLE `postings` (
  `posting_id` int(11) NOT NULL AUTO_INCREMENT,
  `poster_id` int(11) NOT NULL,
  `title` tinytext NOT NULL,
  `short_description` tinytext NOT NULL,
  `full_description` text NOT NULL,
  PRIMARY KEY (`posting_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1

您使用的框架是什么?我认为这是对数据类型文本的一些默认限制

所谓框架,我指的是访问数据库的PHP库:

    $getPosting->bind_param(...);
    $getPosting->execute();
    $getPosting->bind_result(...);
    $getPosting->fetch();
    $getPosting->close();
以上是来自某个库的函数。最可能的情况是,这个库对文本字段的长度有默认限制

编辑:

我发现SQLServer和PHP也存在类似的问题。他们建议这样做:

SELECT CAST(F AS TEXT) AS F FROM
也许你可以做相反的事情:

SELECT ..., CAST(full_description AS VARCHAR) FROM postings

在获取空字符串并将其存储在php中之前,请尝试初始化它。。。。我遇到了一个类似的问题,它只存储字符串的第一个字母,但是当我在存储到它之前初始化var时,它工作了

而不是使用数组来存储结果,如果使用实际变量(即替换此变量):
$getPosting->bind_result($row['posting_id'],$row['poster_id'],$row['title'],$row['short_description'],$row['full_description'];
为此:
$getPosting->bind_result($posting_id,$poster_id,$title,$short_description,$full_description);

看看这是否有什么不同?

我在使用group_concat时遇到了类似的问题,设置group_concat的最大长度对我很有帮助。我只是在select查询之前执行了这个查询


设置GROUP_CONCAT_MAX_LEN=10000;

您能发布表定义吗?SELECT返回的文本有256个字符。您没有任何限制吗?另一件事:如何将数据插入数据库?我现在刚刚添加了它。我看不到限制在哪里…请注意,在phpMyAdmin中,完整的\u描述完全显示出来。因此它被保存了正确。只是在执行选择时被截断。您使用的框架是什么?我认为这是对数据类型文本的一些默认限制。@Lukasz,您可能希望添加注释作为问题的答案,因为您正在努力找到解决方案。=)不确定您所说的框架是什么意思,但我正在Windows上使用XAMPP(这是我的本地测试环境)。这是来自php的本机“mysqli”。这些方法来自mysqli语句()。我找到了与此类似的错误描述。我编辑了我的答案。我使用的是MySQL,而不是Microsoft SQL。在MySQL中,“text”比“varchar”大得多,是65535个字符。是的,我知道。这正是我发现的。也许它会在某种程度上帮助你。这就是我所能帮助的。这解决了我的问题,实际上我需要的增加到40000个字符。