我有一个MySQL表,其中'full_description'列的类型为'text'。 在该列中是标准的lorem ipsum(加上单词END):
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 商品问题。 Duis aute irure 在众议院中的人 velit esse cillum dolore eu fugiat nulla pariatur。行人sint occaecat cupidatat non proident,sunt 在culpa qui officia deserunt mollit anim id est laborum。 END
然而,当在php中对它进行选择时,它只会检索这么多:
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 商品问题。 Duis aute irure 我是
以下是检索它的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
答案 0 :(得分:0)
您使用的框架是什么?我认为这是数据类型TEXT的默认限制。
框架我指的是访问数据库的PHP库:
$getPosting->bind_param(...);
$getPosting->execute();
$getPosting->bind_result(...);
$getPosting->fetch();
$getPosting->close();
以上是来自某些库的功能。最可能的是该库对TEXT字段的长度有默认限制。
<强>编辑:强>
我发现SQL Server和PHP here存在类似问题。他们建议这样做:
SELECT CAST(F AS TEXT) AS F FROM
也许你可以做相反的事情:
SELECT ..., CAST(full_description AS VARCHAR) FROM postings
答案 1 :(得分:0)
尝试在获取并将其存储在php中之前初始化一个空字符串....我有一个类似的问题,它只存储字符串的第一个字母,但是当我在存储之前初始化var时,它起作用了
答案 2 :(得分:0)
如果您使用实际变量,而不是使用数组来存储结果,那么它是否会有所不同,即替换它:$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);
看看这有什么不同吗?
答案 3 :(得分:0)
在使用group_concat并为group_concat设置最大长度时遇到了类似的问题,这对我有帮助。刚刚在我的选择查询之前执行了此查询。
SET GROUP_CONCAT_MAX_LEN = 10000;