2017-06-16 78 views
1

我試圖從當前數據集中的數據庫select語句中讀取前一行數據。如何在while循環中訪問以前的fetch_assoc數據?

我當前的代碼如下所示:

<?php 
      $lib = $_GET["lib"]; 

      include "connect.php"; 

      $sql = "SELECT Image, text, link FROM library WHERE Type = '$lib'"; 
      $result = $conn->query($sql); 

      $count = 1; 
      if ($result->num_rows > 0) { 
       // output data of each row 
       while($row = $result->fetch_assoc()) { 
         if ($count <= 6) { 
          if ($count == 1) { 
           echo "<tr>"; 
          } 
            echo "<td align='center'>"; 
             echo "<a href='".$row["link"]."'><img src='".$row["Image"]."'/></a>"; 
            echo "</td>"; 
           $count++; 
          if ($count == 7) { 
           echo "</tr>"; 
          } 
         } else if ($count >= 7 && $count <= 12) { 
          if ($count == 7) { 
           echo "<tr>"; 
          } 
            echo "<td align='center'>"; 
             echo"<a href='".$row["link"]."'><p>".$row["text"]."</p></a>"; 
            echo "</td>"; 
           $count++; 
           if($count == 13){ 
            $count = 1; 
           } 
          if ($count == 1) { 
           echo "</tr>"; 
          } 

         }     
       } 
       echo "</tr>"; 
      } else { 
       echo "No Videos in the ".$lib." Section at this time!"; 
      } 
      $conn->close(); 
     ?> 

所以第6行會輸出,則7 - 12行將輸出,但將使用從以前的6個結果所選擇的數據。例如:

$ row [「variable」] [ - 6 results]。我知道這樣做的一種方法,但我不記得在執行select語句時處理從數據庫返回的數組的方式。

我正在考慮使用$ result-> data_seek(0);但我不確定如何在這種情況下使用它。

+1

您的代碼容易受到[** SQL注入**](https://en.wikipedia.org/wiki/SQL_injection)攻擊。您應該通過[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https ://secure.php.net/manual/en/pdo.prepared-statements.php)驅動程序。 [**這篇文章**](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)有一些很好的例子。 –

+0

感謝您的建議,我將在研究這個概念後研究加強代碼。它已經有一段時間了,因此在經過3年的休息之後,「把我的腳」放回了編碼。 –

+1

標題中提到的問題的明顯答案是,如果您稍後需要某些東西,那麼將其存儲到變量中...很明顯,不是嗎? – CBroe

回答

0

我已經發現我已經過了複雜的事情。原來,下面的代碼做我需要的。只需要在圖像中包含相同的文本,而不是僅僅爲文本設置新的行。

  <?php 
      $lib = $_GET["lib"]; 

      include "connect.php"; 

      $sql = "SELECT Image, text, link FROM library WHERE Type = '$lib'"; 
      $result = $conn->query($sql); 

      $count = 1; 
      if ($result->num_rows > 0) { 
       // output data of each row 
       while($row = $result->fetch_assoc()) { 
          if ($count == 1) { 
           echo "<tr>"; 
          } 
           echo "<td align='center'>"; 
            echo "<a href='".$row["link"]."'><img src='".$row["Image"]."'/></a>"; 
            echo"<a href='".$row["link"]."'><p>".$row["text"]."</p></a>"; 
           echo "</td>"; 
          if ($count == 6) { 
           echo "</tr>"; 
           $count = 0; 
          } 
          $count++; 
          echo $count; 

       } 
       echo "</tr>"; 
      } else { 
       echo "No Videos in the ".$lib." Section at this time!"; 
      } 
      $conn->close(); 
     ?> 

感謝任何人爲我調查這件事。