PDOStatement::execute() の戻り値は成否を表すboolなので
$result = $stmt->execute();
は結果セットの取り出しとは無関係です

:execute()されるとPDOStatement:に結果セットがセットされます
fetch~は結果セットから取り出すメソッドなのでDBアクセスは伴いません

マニュアルを読んで実験してみるよ良いですよ