Я запрашиваю базу данных, но когда результат пуст, я хочу вывести строку таблицы, отображающую «ничего не отображаемую», но if всегда возвращает true.php echo, если запрос пуст
Вот мой код ...
Я запрашиваю базу данных, но когда результат пуст, я хочу вывести строку таблицы, отображающую «ничего не отображаемую», но if всегда возвращает true.php echo, если запрос пуст
Вот мой код ...
Используйте 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_*
.
все еще, похоже, не могут заставить эту работу работать. – MatthewBryce
что в этом плохого? – mitkosoft
Казалось бы, если всегда оценивается истина ... Я подозреваю, что это как-то ложно. – MatthewBryce
Все еще не понял, почему это не сработает для меня таким образом, я попробовал запрос непосредственно в 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>";
}
}
?>
может показаться довольно глупым способом обойти его, но по крайней мере он работает. Спасибо всем за помощь. :)
[** 'mysql_ *' устарел и больше не включен в PHP] (http://stackoverflow.com/questions/13944956/the-mysql-extension-is-deprecated-and-will-be -Удалена-в-будущем-потребительной MySQLi) **. – Ben
Вы пытались var_dump значение priorityincidentsR? – rikpg
Что именно показывает ваша таблица после выполнения кода? Теоретически, оператор if никогда не запускался бы, если бы ваш результат не возвращал никаких строк из-за условия цикла while. Если строк не было, то mysql_fetch_object() 'не будет считаться истинным. В вашем запросе должна быть ошибка, если вы вообще видите результаты инструкции if. – shamsup