如何在mysqli_fetch_assoc上显示“未找到结果”


How to display "no results found" on mysqli_fetch_assoc?

我正在尝试在搜索找到 0 个结果时显示一条消息。我已经尝试了几种不同的方法来做到这一点,但没有任何效果;我总是得到一个空白页或设法显示消息,即使搜索找到结果。

代码:

$post = $_POST;
if (isset($post['Kohderyhmä']) &&
    isset($post['Näytön_aste']) &&
    isset($post['Vaikutusten_vahvuus']) &&
    isset($post['Käyttökelpoisuus']))
{
  $Kohderyhmä = $post['Kohderyhmä'];
  $Näytön_aste = $post['Näytön_aste'];
  $Vaikutusten_vahvuus = $post['Vaikutusten_vahvuus'];
  $Käyttökelpoisuus = $post['Käyttökelpoisuus'];
} 
else 
{ 
  echo '<!-- Virhe -->'; /*die ('<h2>Ei hakutermi&auml; sy&ouml;tetty. <a href="/haku">Avaa haku</a></h2>');*/ 
}
$count = 0;
$and   = "";
$query = "";
if (!empty($Kohderyhmä) && $Kohderyhmä !="Kaikki" ) {
  if ($count > 0) { 
    $and   = " AND ";  
  }
  $count++;
  $query = $query.$and."`Kohderyhmä` LIKE '%".$Kohderyhmä."%'";
}
if (!empty($Näytön_aste) && $Näytön_aste !="Kaikki" ) {
  if ($count > 0) { $and   = " AND ";  }
  $count++;
  $query = $query.$and."`Näytön aste` LIKE '%".$Näytön_aste."%'";
}
if (!empty($Vaikutusten_vahvuus) && $Vaikutusten_vahvuus !="Kaikki" ) {
  if ($count > 0) { $and   = " AND ";  }
  $count++;
  $query = $query.$and."`Vaikutusten vahvuus` LIKE     '%".$Vaikutusten_vahvuus."%'";
}
if (!empty($Käyttökelpoisuus) && $Käyttökelpoisuus !="Kaikki" ) {
  if ($count > 0) { $and   = " AND ";  }
  $count++;
  $query = $query.$and."`Käyttökelpoisuus` LIKE '%".$Käyttökelpoisuus ."%'";
}
if ($count > 0) {
    $query = "SELECT * FROM `tietokanta` WHERE ".$query;
    } else {
    $query = "SELECT * FROM `tietokanta`";    
    } 
//echo $query;

if ($results = $conn->query($query)) {
while ($row = $results->fetch_assoc()) {
echo '<h3><a href="/hae?työmenetelmä=' . $row['nro'] . '">' . $row['Nimi'] . '</a></h3>';
echo $row['Kokonaisarvio'] ."<br /><br />";
echo $row['Kuvaus'] ."<br /><br />";
  }
   } else {
  echo '<h2>Haku ei tuottanut yhtään tulosta. Muuta hakuehtoja ja hae     uudestaan.</h2>';
}

我试图从互联网和 php.net 页面中找到教程和其他提示,但我找不到可行的解决方案。

这很奇怪,因为这个问题每周都会被问到。更不用说你可以在mysqli_query的手册页上读到这个函数的返回值总是正数,无论它是否被发现

将您的代码更改为此代码

if ($results = $conn->query($query)->fetch_all(MYSQLI_ASSOC)) {
    foreach ($results as $row) {
        echo '<h3><a href="/hae?työmenetelmä=' . $row['nro'] . '">' . $row['Nimi'] . '</a></h3>';
        echo $row['Kokonaisarvio'] ."<br /><br />";
        echo $row['Kuvaus'] ."<br /><br />";
      }
} else {
  echo '<h2>Haku ei tuottanut yhtään tulosta. Muuta hakuehtoja ja hae uudestaan.</h2>';
}

试试下面的代码

$results = $conn->query($query);    
if ($results->num_rows >= 1){
    while ($row = $results->fetch_assoc()) {
        echo '<h3><a href="/hae?työmenetelmä=' . $row['nro'] . '">' . $row['Nimi'] . '</a></h3>';
        echo $row['Kokonaisarvio'] ."<br /><br />";
        echo $row['Kuvaus'] ."<br /><br />";
    }
}
else{
    echo '<h2>Haku ei tuottanut yhtään tulosta. Muuta hakuehtoja ja hae uudestaan.</h2>';
}