2012-01-08 13 views
1

なんらかの理由でステートメントが実行され、bind_resultsがすべての値を返しますが、$ postContentの最後の値は返しません。bind_result()がすべての結果を取得しない

<?php 
      if (isset($_GET['postID'])) 
      { 
       $postID = $_GET['postID']; 
       $stmt = $mysqli->prepare("SELECT * FROM Posts WHERE postID = ?"); 
       $stmt->bind_param('i', $postID); 
       $stmt->execute(); 
       $stmt->bind_result($postID, $postTitle, $postCat, $postUser, $postDateTime, $postContent); 
       $stmt->fetch(); 
       echo $postContent; 
       ?> 
       <h1><?php echo $postTitle;?></h1> 
      </div> <!-- End of box div --> 
      <div class="blogroll"> <!-- Start of blogroll div --> 
      <div class="top"></div> <!-- Start and end of top div --> 

      <div class="post"> <!-- Start of post div --> 
       <div class="post_date">Posted by <?php echo $postUser;?> on <?php echo $postDateTime ?> Category : <?php echo $postCat;?></div> <!-- Start and end of post_date div --> 
       <div class="post_text"> <!-- Start of post_text div --> 
        <?php echo $postContent;?> 
       </div> <!-- End of post_text div --> 
       <?php 
      } 
     ?> 

答えて

1

これは、あなたがSELECT *を行うときに、データベース内のソース表が実際に$postContentの列を供給している前提としています

$postContentが実際にあるかどうかを確認するために、あなたのPHPスクリプトから出力されたHTMLソースを見ますソースには表示されますが、画面には表示されません。 HTML用のデータベース出力(エコー<&lt;など)をエスケープしていないため、$postContentまたはそれ以前の変数の内容が出力を破棄している可能性があります。これらの変数を直接エコーするのではなく、htmlspecialchars()にそれぞれをラップしてHTML内に出力します。

<?php echo htmlspecialchars($postTitle); ?> 
<?php echo htmlspecialchars($postUser); ?> 
<?php echo htmlspecialchars($postDateTime); ?> 
<?php echo htmlspecialchars($postCat); ?> 
<?php echo htmlspecialchars($postContent); ?> 
+0

データベースはpostContentの列を提供し、bind_resultsと同じ順序で表示されます。私はあなたが提案したものを試しましたが、HTMLページのソースコードにpostContentを表示しません。また、htmlspcialchars()もうまくいきませんでしたが、私はHTMLタグ(例えば、
)を使用する予定です。私はそれを引き続き使用します。あなたは大きな助けになっています –

+0

これ以上の考えはありますか? –

+0

@ user1136076他にも、var_dump($ postContent)と他の変数の_all_が、それぞれが期待するものを含んでいることを確認することができます。 –

2

MySQLiはLONG​​TEXTオブジェクトの最大サイズ(〜4GB)に十分なメモリを割り当てられません。

これは既知のバグ:https://bugs.php.net/bug.php?id=51386です。

回避策は、LONGTEXT列をMEDIUMTEXTなどに変換するか、別のデータベースまたはインターフェイスクラスを使用することを検討してください。

+0

これはありがとう、これはGoogleにとって世界で最も難しい問題です。 – tj111