Intereting Posts
Перенаправить HTTPS на HTTP, если параметр querystring отсутствует через htaccess Текст на изображении Изменение значения текстового поля с помощью раскрывающегося списка, выбранного в php и mysql PHP – альфа сортирует строки из нескольких файлов в одном каталоге и сохраняет их в файлах с максимальными строками «x» в папках с именованными именами Чтение данных JSON с использованием PHP загрузить файл изображения с помощью ajax и codeigniter всегда выдает ошибку upload_path Larvel 5.1 количество разбивки на страницы Несколько экземпляров PHP-скрипта не будут загружаться одновременно в одном браузере с одного и того же URL-адреса MVC считывает URL-адрес контроллера и действия Получить контейнер Symfony в EntityRepository Объединение таблиц из двух баз данных с использованием codeigniter Сделать таблицу с несколькими столбцами из файла CSV с помощью PHP PHP MySQL Query не работает, но работает с терминала проблема с объектом PDO Неустранимая ошибка: допустимый размер памяти 268435456 байт исчерпан (пытался выделить 71 байт)

оператор mysqli не отображает ничего для результата

У меня есть утверждение, довольно базовое, которое извлекается из базы данных и отображает информацию. Оно работает. Однако, если я удалю запись в базе данных, оператор else должен сказать, что результатов нет. Однако это не так. Может ли кто-нибудь увидеть проблему?

Это код, бит, который я принимаю, это if ($ result) {

$con=mysqli_connect("localhost","user","pass","db"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); }else { $result = mysqli_query($con,"SELECT * FROM vacancies WHERE status ='0'"); if($result) { while($row = mysqli_fetch_array($result)) { echo "<li><a href=\"current_vacancy?id=".$row['id']. "\">". $row['title'] ."</a> <img src=\"rightarrow.png\" alt=\"next\"></li>"; } } else { // execute for 0 rows returned. echo "There are currently no vacancies available"; } } 

благодаря

Solutions Collecting From Web of "оператор mysqli не отображает ничего для результата"

Чтобы не выполнить никакого результата, вам нужно проверить количество строк, которые вы mysqli_num_rows() по запросу, с помощью mysqli_num_rows() .

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

Чтобы сделать его более естественным

 $data = []; $result = $con->query("SELECT * FROM vacancies WHERE status ='0'"); while($row = mysqli_fetch_array($result)) { $data[] = $row; } ?> 

и теперь вы можете использовать $data так, как вы пытались использовать $ result:

 <?php foreach ($data as $row): ?> <li> <a href="current_vacancy?id=<?=$row['id']?>"> <?=$row['title']?> </a> <img src="/images/rightarrow.png" alt="next"> </li> <?php endforeach ?> <?php if(!$result): ?> There are currently no vacancies available <? endif ?> 

Результат, возвращаемый mysqli_query является объектом, а не числом строк. Используйте mysqli_num_rows($result) чтобы получить количество строк.

Кстати, обязательно вызовите mysqli_free_result($result) в конце. Предлагаемый план:

 $result = mysqli_query(…); if (!$result) { # Handle failure } else { if (mysqli_num_rows($result) == 0) { # Handle no vacancies } else { # Normal case } mysqli_free_result($result); }