2017-01-05 3 views
-1

Я пытаюсь сделать код, который будет работать как тот, который приведен ниже, но мне нужно его для получения данных только один раз, потому что мой код ниже извлекается более одного раза, и я боюсь, что это замедлит работу сервера. есть ли лучший способ сделать то же самое с приведенным ниже. в основном код ниже поместит список из базы данных в свою собственную категорию div.есть ли лучший способ для этого метода?

<div class="popular-video"> 
<h2>Popular</h2> 
    <ul> 
    <?php 

     global $connection; 
     $sexy = "sexy"; 
     $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views`,`tags` FROM `videolist` WHERE `tags` = ? "; 
     $stmt = $connection->prepare($query); 
     $stmt->bind_param("s",$sexy); 
     $stmt->execute(); 
     $stmt->store_result(); 

     if($stmt->num_rows > 0){ 
      $stmt->bind_result($videoname,$username,$videourl,$uploaddate,$duration,$views,$tags); 
      while ($stmt->fetch()) { 
       if($username == 'ichigo'){ 
       echo " 
         <a href='video.php?watch=$videourl'> 
         <li> 
          <div class='leftside'> 
           <img src='' width='100%' height='100%' style='background-color: blue;' >      
          </div> 

          <div class='rightside'> 
           <h4>$videoname</h4> 
           <p>$username</p> 
           <p>$views views</p> 
           <p>$duration</p>      
          </div> 

         </li> 
         </a> 
       ";      
       } 

      } 
     } 
    ?> 
    </ul> 
</div> 

<div class="subcription-video"> 
<h2>Subcription</h2> 
    <ul> 
    <?php 
     global $connection; 
     $sexy = "sexy"; 
     $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views` FROM `videolist` WHERE `tags` = ? "; 
     $stmt = $connection->prepare($query); 
     $stmt->bind_param("s",$sexy); 
     $stmt->execute(); 
     $stmt->store_result(); 
     if($stmt->num_rows > 0){ 
      $stmt->bind_result($videoname,$username,$videourl,$uploaddate,$duration,$views); 
      while ($stmt->fetch()) { 
       echo " 
         <a href='video.php?watch=$videourl'> 
         <li> 
          <div class='leftside'> 
           <img src='' width='100%' height='100%' style='background-color: blue;' >      
          </div> 

          <div class='rightside'> 
           <h4>$videoname</h4> 
           <p>$username</p> 
           <p>$views views</p> 
           <p>$duration</p>      
          </div> 

         </li> 
         </a> 
       "; 
      } 
     } 
    ?> 
    </ul> 
</div> 

<div class="related-video-by-subcription"> 
<h2>Related-Video</h2> 
    <ul> 
    <?php 
     global $connection; 
     $sexy = "sexy"; 
     $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views` FROM `videolist` WHERE `tags` = ? "; 
     $stmt = $connection->prepare($query); 
     $stmt->bind_param("s",$sexy); 
     $stmt->execute(); 
     $stmt->store_result(); 
     if($stmt->num_rows > 0){ 
      $stmt->bind_result($videoname,$username,$videourl,$uploaddate,$duration,$views); 
      while ($stmt->fetch()) { 
       echo " 
         <a href='video.php?watch=$videourl'> 
         <li> 
          <div class='leftside'> 
           <img src='' width='100%' height='100%' style='background-color: blue;' >      
          </div> 

          <div class='rightside'> 
           <h4>$videoname</h4> 
           <p>$username</p> 
           <p>$views views</p> 
           <p>$duration</p>      
          </div> 

         </li> 
         </a> 
       "; 
      } 
     } 
    ?> 
    </ul> 
</div> 
+0

Я не думаю, что несколько запросов будут сильно влиять на скорость вашего сервера. –

+0

есть 9 запросов, подобных этому, и это замедлит работу сервера, если я сделаю это таким образом. – freelixa

ответ

0

Вы можете сделать функцию и вызвать эту функцию в своем HTML.

function foo() { 
    global $connection; 
    $sexy = "sexy"; 
    $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views` FROM `videolist` WHERE `tags` = ? "; 

    $stmt = $connection->prepare($query); 
    $stmt->bind_param("s",$sexy); 
    $stmt->execute(); 
    $stmt->store_result(); 

    if($stmt->num_rows > 0) { 
     $stmt->bind_result($videoname, $username, $videourl, $uploaddate, $duration, $views); 
     while ($stmt->fetch()) { 
      echo "<a href='video.php?watch=$videourl'> 
        <li> 
         <div class='leftside'> 
          <img src='' width='100%' height='100%' style='background-color: blue;' >      
         </div> 

         <div class='rightside'> 
          <h4>$videoname</h4> 
          <p>$username</p> 
          <p>$views views</p> 
          <p>$duration</p>      
         </div> 
        </li> 
        </a>"; 
     } 
    } 
} 

Тогда просто вызовите функцию, где вы хотите.

<div class="popular-video"> 
    <h2>Popular</h2> 
    <ul> 
     <?php foo(); ?> 
    </ul> 
</div> 
+0

Я хотел вызвать запрос один раз, но выбор будет помещен в его собственные категории. – freelixa

+0

Затем просто сохраните все результаты в массиве. –

+0

как только я вызову массив вне его функции while, он отображает только один из данных. – freelixa

0

Вы должны отделить свою бизнес-логику от логики представления.

И вы можете позвонить $ stmt-> fetch_all() и сохранить результат в переменной, а затем использовать эту переменную в своих циклах.

Смежные вопросы