2016-02-26 4 views
2

Я запрашиваю базу данных, но когда результат пуст, я хочу вывести строку таблицы, отображающую «ничего не отображаемую», но if всегда возвращает true.php echo, если запрос пуст

Вот мой код ...

+2

[** 'mysql_ *' устарел и больше не включен в PHP] (http://stackoverflow.com/questions/13944956/the-mysql-extension-is-deprecated-and-will-be -Удалена-в-будущем-потребительной MySQLi) **. – Ben

+1

Вы пытались var_dump значение priorityincidentsR? – rikpg

+0

Что именно показывает ваша таблица после выполнения кода? Теоретически, оператор if никогда не запускался бы, если бы ваш результат не возвращал никаких строк из-за условия цикла while. Если строк не было, то mysql_fetch_object() 'не будет считаться истинным. В вашем запросе должна быть ошибка, если вы вообще видите результаты инструкции if. – shamsup

ответ

4

Используйте mysqli_num_rows(), чтобы проверить, есть ли результат:

$conn = mysqli_connect($host, $user, $password, $database); 
    $priorityincidentsQ = mysqli_query($conn, "SELECT * FROM applications WHERE pi >= ('2') "); 
    if (mysqli_num_rows($priorityincidentsQ) > 0){ 
     while ($priorityincidentsR = mysqli_fetch_object($priorityincidentsQ)) { 
      echo "<tr><td class=\"closedcallscell\"><b>$priorityincidentsR->application_friendly_name</b></td>"; 
      echo "<td class=\"closedcallscell table_row_small\"><center>$priorityincidentsR->pi</center></td></tr>"; 
     } 
    }else{  
     echo "<tr><td class=\"closedcallscell centered\"><b>Nothing to display</b></td></tr>"; 
    } 

И да, лучше использовать mysqli_* функции вместо mysql_*.

+0

все еще, похоже, не могут заставить эту работу работать. – MatthewBryce

+0

что в этом плохого? – mitkosoft

+0

Казалось бы, если всегда оценивается истина ... Я подозреваю, что это как-то ложно. – MatthewBryce

0

Все еще не понял, почему это не сработает для меня таким образом, я попробовал запрос непосредственно в SQL Workbench, и все выглядит так, как должно быть, я решил решить эту проблему.

<!-- priority incidents--> 
<?php 

$priorityincidentsQ   = mysql_query("SELECT * FROM applications WHERE pi >= ('1') "); 
while($priorityincidentsR = mysql_fetch_object($priorityincidentsQ)) 
    { 
    echo "<tr><td class=\"closedcallscell\"><b><a href=\"".DIR."?p=$priorityincidentsR->pageID\">$priorityincidentsR->application_friendly_name</a></b></td>"; 
    echo "<td class=\"closedcallscell table_row_small\"><center>$priorityincidentsR->pi</center></td></tr>"; 
    } 

?> 

<!-- if no incidents--> 
<?php 

$incidentNumberofRowsQ  = mysql_query("SELECT COUNT(*)numberofrows FROM applications WHERE pi >= ('1') "); 
while($incidentNumberofRowsR = mysql_fetch_object($incidentNumberofRowsQ)) 
    { 

     if ($incidentNumberofRowsR->numberofrows == '0') 
     { 
       echo "<tr><td class=\"closedcallscell centered\"><b>Currently no priority incidents</b></td>"; 
     } 
    } 

?> 

может показаться довольно глупым способом обойти его, но по крайней мере он работает. Спасибо всем за помощь. :)

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