Busque y obtenga doble resultado en PHP

Aquí está mi código PHP que solía buscar desde la base de datos Mysql desde PHPMyAdmin. Pero cuando obtengo el resultado, muestra el doble. No entendí por qué es doble. Si es para el bucle 'foreach', ¿qué usaré en lugar de eso? Por favor, ayúdame con el código.

<?Php

?>
<html>
<head>
    <style>
                @media print {
  #printPageButton {
    display: none;
  }
  #another {
      display: none;
  }
}
.border {
  border-style: double;
  border-color: blue;
}
</style>
<title>Demo of Search Keyword using PHP and MySQL</title>
</head>

<body>
<?Php
error_reporting(0);
include "config_1.php";
$todo=$_POST['todo'];
$search_text=$_POST['search_text'];
if(strlen($serch_text) > 0){
if(!ctype_alnum($search_text)){
echo "Data Error";
exit;
}
}
if(isset($todo) and $todo=="search"){

$type=$_POST['type'];

$search_text=ltrim($search_text);
$search_text=rtrim($search_text);

    if($type<>"any"){
$query="select * from billbagnan where name='$search_text'";
        }
$count=$dbo->prepare($query);
$count->execute();
$no=$count->rowCount();
foreach ($dbo->query($query) as $row){
echo "
<table class='border' style='text-align:center;'  width='900'>";
 echo "</td><td width='400' valign=top>";
echo " Full records here ";
echo "<table><tr><th>ID</th><th>Name</th><th>Institution</th></tr>";
foreach ($dbo->query($query) as $row){
echo "<tr><td>$row[id]</td><td>$row[name]</td><td>$row[instn]</td>
</tr>";
}
echo "</table>";
echo "</td></tr></table>";
}
}
?>

Respuestas a la pregunta(1)

Su respuesta a la pregunta