記載のコードを見ると混乱が見て取れるのですが、残念ながらその疑問を丁寧に解きほぐせるような場ではないので、おそらく十分な回答にはならないと思います。
// 1. 問い合わせの内容
$sql = "SELECT * FROM users ORDER BY id ASC;";
// 2. 問い合わせの実行
$stmt = $db->query($sql);
// 3. 問い合わせ実行結果の取得
$result = $stmt->fetchAll();
これはデータベースに対して検索して結果を取得する基本的な形ですね。
この形をベースに「検索するデータを変える」というのをやろうとすると、「問い合わせの内容」を変更することになります。よって、下記のようなところが最初の一歩になると思います。
$sql = "SELECT * FROM users where username LIKE '%$search%' order by id ASC";
しかしながら、どのような疑問や試行錯誤があって現在のコードに着地したのかがわからないので、この先の解説が難しいです。
まずは次のような流れで理解を深めていくのが良いと思います。
- 変更前のコードについて、プログラムがどのように動作しているか理解する
- 「部分一致検索を実装する」ために必要な要素やタスクを列挙する
- 列挙した要素やタスクにひとつひとつに対して、実現する方法を検討する
- それぞれの要素を組み合わせる