Sie sollten @ nicht verwenden, um Fehler zu unterdrücken, es ist eine schlechte Praxis, überprüfen Sie, ob der Wert gesetzt ist. Das folgende Beispiel sollte funktionieren, aber die Ergebnisse sind möglicherweise nicht so relevant.
$search = isset($_GET['q']) ? $_GET['q'] : '';
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$words = explode(' ', $search);
$words_condition = array();
$arguments = array();
foreach ($words as $word) {
$words_condition[] = 'name LIKE ?';
$arguments[] = '%'.$word.'%';
}
$query = $con->prepare('SELECT * FROM `users` WHERE '.implode(' OR ', $words_condition));
$query->execute($arguments);
$result = $query->rowCount();
echo $result;