2009-10-02 6 views
2

1 ont une table MySQL avec une colonne 'full_description' de type 'texte'. dans cette colonne est une norme ipsum lorem (plus la fin des mots):PHP MySQL sélectionner le texte tronqué

Lorem ipsum carottes, tomates rabais et donner de la vitalité à l'effort et le temps occaecat obésité. Au fil des années tout , je viendrai, j'aliquip les efforts de relance si le district scolaire qui est hors de son l'exercice de nostrud, avantage de la recette. Duis ont actuellement cillum cupidatat veulent être une douleur pour trouver la douleur dans le plaisir du football fuyez ne produit pas obtenu. Ils ne sont pas excepteur excepteur cupidatat stores, il y a est apaisante pour l'âme, qui est en faute, ils ont déserté les devoirs généraux de ceux qui, de vos problèmes. Mettre fin à

Cependant, lorsque vous faites une commande select en PHP, il récupère seulement ceci:

lorem carottes ipsum, rabais améliorés, mais ils temps occaecat et de vitalité, comme le travail et l'obésité. Au fil des années tout , je viendrai, j'aliquip les efforts de relance si le district scolaire qui est hors de son l'exercice de nostrud, avantage de la recette. Travail à domicile si cupidatat douleur que je

Voici le code PHP qui récupère,

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;   
    } 

Ceci est le tableau que 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) 

Le reste des champs sont très bien . 1 Qu'est-ce que je fais mal? Ou est-il un paramètre ou caractéristique qui limite les instructions select 1'm pas au courant? MySQL? Le PHP MySQL?

Merci

Ceci est la structure de la table sur demande:

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

Pouvez-vous publier la définition de la table? Le texte renvoyé par SELECT a 256 caractères. N'avez-vous aucune limite? Une autre chose: comment insérez-vous les données dans la base de données? –

+0

Je viens de l'ajouter maintenant. Je ne vois pas où la limite serait ... Notez que dans phpMyAdmin, la description complète s'affiche complètement. Donc, il est enregistré correctement. Juste tronqué lorsque vous faites le SELECT. –

+1

Quel est le cadre que vous utilisez? Je pense que c'est une limitation par défaut sur le type de données TEXT. –

Répondre

0

Quel est le cadre que vous utilisez? 1 pense que c'est une limitation du type de données par défaut Texte.

par le cadre 1 signifie la bibliothèque PHP qui accéder à la base de données:

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

ci-dessus sont les fonctions qui vient d'une bibliothèque. Et le plus probable est que cette bibliothèque a des restrictions par défaut pour la longueur du champ de texte.

modifié:

1 ont trouvé le même problème avec SQL Server et PHP here.Ils suggèrent de faire comme ceci:

SELECT CAST(F AS TEXT) AS F FROM 

Peut-être que vous pourriez faire le contraire:

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

Ceci est le "mysqli" natif de php. Ces méthodes proviennent de MySQLi Statement (http://www.php.net/manual/fr/class.mysqli-stmt.php). –

+0

J'ai trouvé la description du bug qui est similaire. J'ai édité ma réponse. –

+0

J'utilise MySQL, pas Microsoft SQL. En MySQL, 'texte' est beaucoup plus grand que 'varchar', c'est 65 535 caractères. –

0

essayer d'initialiser une chaîne vide avant d'extraire et de stocker dans le php .... j'avais problème similaire où il ne stockait que la première lettre d'une chaîne, mais quand j'ai initialisé le var avant de le stocker, il a travaillé

0

Au lieu d'utiliser un tableau pour stocker les résultats, fait-il une différence si vous utilisez réel variables ie remplacer ceci: $getPosting->bind_result($row['posting_id'],$row['poster_id'],$row['title'],$row['short_description'],$row['full_description']); avec ceci: $getPosting->bind_result($posting_id,$poster_id,$title,$short_description,$full_description); Voyez si cela fait une différence?

Questions connexes