2009-10-02 54 views
2

1有一个MySQL表类型“文本”的列“full_description”。 该列是一个标准的Lorem存有(加字结尾):PHP MySQL的选择文本截断

Lorem存有胡萝卜,番茄 回扣和给活力的精力和时间occaecat 肥胖。多年来所有 会我来了,我可以aliquip刺激措施,如果学区谁出她的 nostrud锻炼,配方的 优势。 DUIS目前有cillum cupidatat 希望找疼痛足球的乐趣逃离 不产生合力的痛苦。他们不是excepteur excepteur cupidatat 百叶窗,还有 是舒缓的灵魂,即有过错,他们抛弃了那些谁的一般职责,从你的烦恼。结束

然而,在PHP中做一个选择它的时候,它只能检索这么多:

Lorem存有胡萝卜, 增强回扣,但他们 occaecat时间和活力,如劳动力和 肥胖。多年来所有 会我来了,我可以aliquip刺激措施,如果学区谁出她的 nostrud锻炼,配方的 优势。家庭作业,如果cupidatat 疼我

下面是检索它的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;   
    } 

这是数组1 GET:

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) 

领域的其余部分都很好。 1 我究竟做错了什么?或者是有限制的select语句1'm没有意识到设置或功能?在MySQL?在PHP MySQL的?

感谢

这是根据请求表结构:

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

你能后的表定义? SELECT返回的文本有256个字符。你没有任何限制吗?另一件事:你如何将数据插入数据库? – 2009-10-02 21:39:15

+0

我刚刚添加它。 我没有看到,其中,极限将是...请注意,在phpMyAdmin中,full_description完全显示。所以它被正确保存。在执行SELECT时截断。 – 2009-10-02 21:41:54

+1

你使用的是什么框架?我认为这是对TEXT数据类型的一些默认限制。 – 2009-10-02 21:48:59

回答

0

什么框架您正在使用? 1认为这是在默认数据类型的文本一定的局限性。

通过框架1意味着其访问数据库的PHP库:

$getPosting->bind_param(...); 
    $getPosting->execute(); 
    $getPosting->bind_result(...); 
    $getPosting->fetch(); 
    $getPosting->close(); 

以上是来自一些库中的函数。而最有可能的是,这个库中有文本字段的长度默认限制。

编辑:

1发现与SQL Server和PHP here类似的问题。他们建议这样做:

SELECT CAST(F AS TEXT) AS F FROM 

也许你可以做相反的事情:

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

这是来自php的本机“mysqli”。 这些方法是从库MySQLi声明(http://www.php.net/manual/en/class.mysqli-stmt.php)。 – 2009-10-05 16:43:19

+0

我发现了类似的bug的描述。我编辑了我的答案。 – 2009-10-05 17:47:54

+0

我正在使用MySQL,而不是Microsoft SQL。在MySQL中,'text'比'varchar'大很多,它是65,535个字符。 – 2009-10-06 01:07:20

0

尝试,你获取并存储在PHP之前初始化一个空字符串....我有一个类似的问题,即它只能存储一个字符串的第一个字母,但是当我保存它之前初始化的变种,它的工作

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); 看看是否有什么差别?