Blank page when entering space in php search

When adding a name with a space in the search bar the header and the footer remains however the body disappears. I even added ini_set('display_errors', '1') and ini_set( 'default_charset', 'UTF-8' ); to check for errors however that didn't help. Please note that the function works fine except when when entering any spaces

Here is the code:

    <?php 
//ini_set('display_errors', '1');
//ini_set( 'default_charset', 'UTF-8' );
session_start();
 
$title="Search";
include('includes/connection.php');   
$url=parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
$url_array=explode("/",$url);
$name=end($url_array);
$uname = urldecode($name);

$position="absolute";

$sql ="SELECT userName , firstName, lastName,id 
        FROM users 
        WHERE userName LIKE ? 
        or firstName like ? 
        or lastName Like ? 
        or  concat(firstName,' ',lastName) = ?";

$params=array("$uname","$uname","$uname","$uname");    
$query= $dbh -> prepare($sql);

if($query-> execute($params)){
    $results=$query->fetchAll(PDO::FETCH_OBJ);

    if($query->rowCount() > 6) {
        $position="inherit";
    } else {
        $position="absolute";
    }
}

if (!$results) {
    $mess = true;
    // echo '<script type="text/javascript">alert("Hi");</script>';
}
//else {
    //$mess = true;
    //$query->errorInfo();
//}

include('includes/header.php');

//else 
//{
   // $mess = $query->errorInfo();
   // echo '<script type="text/javascript">alert("'.$mess[2].'");</script>';
//}
?>

<main role="main" class="mbr-fullscreen" style="display: grid;position: <?php echo $position;?>;">

    <div class="album py-5" >
        <div class="container">
            <div class="row">
          
<?php 
if(!$results) {
    echo'<div class="col-lg-12 mx-auto">
        <center>
            <h1 style="padding: 10px; color: #575957;">No results found</h1>
            <h6>We couldn\'t find any user matching your search</h6>
            <a  href="/index.php" class="btn btn-primary display-4" >Search Again</a>
        </center>
    </div> ';
}
?>
          
          
<?php 
foreach($results as $result) {
?>  
                                                            
    <div class="col-md-4">
        <div class="card mb-4 shadow-sm">
            <div class="card-body">
                <h3 class="card-text text-center" style="text-transform: capitalize;"><?php echo htmlentities($result->userName);?></h3>
                <p class="text-center"> <?php echo htmlentities ($result->firstName).' ';  echo htmlentities ($result->lastName); ?> </p>
                <div class="d-flex justify-content-between align-items-center">
                    <div class="btn-group mx-auto mbr-form">
                        <a href="<?php echo $baseurl; ?>/<?php echo $result->userName; ?>" class="btn btn-sm btn-outline-secondary">View</a>
                    </div>
                </div>
            </div>
        </div>
    </div>

<?php 
} 
?>
          
          
      </div>
    </div>
  </div>

</main>

<?php include('includes/footer.php');?>

Solution 1:

Like statement does not work like that. You should change your query in the proper format.

Replace:

$params=array("$uname","$uname","$uname","$uname"); 

With:

$params=array("%$uname%","%$uname%","%$uname%","%$uname%");