2017-02-14 19 views
-2

так им бездельничать Abit с строки запроса и т.д., однако я хочу, чтобы отобразить сообщение об ошибке, если не будет никакого результата от этого кода:

else { 
      if (isset($_GET['Category'])) { 
      $category = $_GET['Category']; 
      $sql = "SELECT * FROM Posts WHERE Category='$category'"; 
      $stmt = $conn->prepare($sql); 
      $stmt->execute(array(':category'=>$category)); 
      while($cat = $stmt->fetch(PDO::FETCH_ASSOC)) { 
       ?> 

       <div class="post_body"> 
       <div class="post_header"> 
        <h2><?php echo "$cat[Title]";?></h2> 
       </div> 
       <?php echo "$cat[Post]";?> 
       <a class="read-more" href="?ID=<?php echo "$cat[ID]";?>#lamna_kommentar">Lämna en kommentar</a> 
       <hr> 
       <div class="post_footer"> 
        <span class="left_span"> 
        <strong>Av: </strong><?php echo "$cat[Author]";?> 
        <strong>Kategori: </strong><?php echo "$cat[Category]";?> 
        </span> 
        <span class="right_span"> 
        <strong>Datum: </strong><?php echo date_format(new DateTime($cat['Date']), 'd M Y, H:i');?> 
        <strong>Inlägg: #</strong><?php echo "$cat[ID]";?> 
        </span> 
       </div> 
       </div> 
       <?php 
      } 
      } 

как это работает сейчас эта ссылка показывает a class="read-more" href="?ID=<?php echo "$cat[ID]";?>#lamna_kommentar">Lämna en kommentar</a>, но ничего больше, когда результата нет.

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

+1

У вас нет ничего в вашей строке запроса под названием «Категория» –

+0

** ПРЕДУПРЕЖДЕНИЕ ** При использовании PDO вы должны использовать [подготовленный утверждения] (http://php.net/manual/en/pdo.prepared-statements.php) с значениями-заполнителями и предоставлять любые пользовательские данные в качестве отдельных аргументов. В этом коде у вас есть потенциально серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). Никогда не используйте строчную интерполяцию или конкатенацию и вместо этого используйте [подготовленные заявления] (http://php.net/manual/en/pdo.prepared-statements.php) и никогда не ставьте данные '$ _POST' или' $ _GET' прямо в свой запрос. Обратитесь к [PHP The Right Way] (http://www.phptherightway.com/) для ознакомления с этой и другими проблемами. – tadman

+0

@tadman да спасибо, а не сайт производства или так атм, поэтому я действительно не беспокоился –

ответ

1

Вы можете проверить количество строк, которые были возвращены:

if ($stmt->rowCount() == 0) { 
    // display error 
} else { 
    while ($cat = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     ... 
    } 
} 
+0

, если вы используете rowCount, а не работает, спасибо! :) –

+0

К сожалению, смешение PDO и mysqli, извините за это – Barmar

+0

Не волнуйтесь, спасибо еще раз :) –