エラーを消音するために@を使用しないでください。これは悪い習慣です。値が設定されているかどうかを確認してください。以下の例は機能するはずですが、結果はそれほど関連性がない可能性があります。
$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;