2012-01-08 153 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

這是假設您在數據庫源表實際上是$postContent提供一列,當你做SELECT *

查看HTML源代碼是輸出由你的PHP腳本,看是否$postContent實際上是出現在源代碼中,但不在屏幕上。你還沒有逃過HTML的數據庫輸出(編碼爲<,如&lt;等),因此$postContent或更早的變量中的某些內容可能會破壞你的輸出。在HTML中打印每個變量時,不要直接回顯這些變量,而應將其包裝在htmlspecialchars()中。

<?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標籤,例如
我將繼續使用它。你是一個很好的幫助 – 2012-01-08 20:18:07

+0

還有什麼想法? – 2012-01-09 22:36:00

+0

@ user1136076我可以建議的另一件事是'var_dump($ postContent)'和其他變量的_all_以確定它們每個都包含預期的內容 – 2012-01-10 14:40:43

2

MySQLi無法爲LONGTEXT對象(〜4Gb)的最大大小分配足夠的內存。

這是一個已知的bug:https://bugs.php.net/bug.php?id=51386

解決方法是將LONGTEXT列轉換爲MEDIUMTEXT或更小的其他東西,或考慮使用替代數據庫或接口類。

+0

感謝這一點,這是世界上最棘手的問題谷歌。 – tj111 2013-10-03 20:50:41