2017-06-16 13 views
1

私は、現在のデータセットのデータベース選択ステートメントから前の行のデータをフェッチしようとしています。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]たとえば、$ 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(); 
     ?> 

私のためにこれを探していた人に感謝します。

関連する問題