Я не думаю, что действительно есть какое-то преимущество в использовании одной над другой, кроме того, что первая использует три строки, а вторая использует одну (меньше возможностей для ошибок со вторым методом).Первый может использоваться чаще, потому что документация гласит , что "типичная последовательность вызова метода для инструкции SELECT - подготовка, выполнение, выборка, выборка, ... выполнение, выборка, выборка, ..."и приводит этот пример:
$sth = $dbh->prepare("SELECT foo, bar FROM table WHERE baz=?");
$sth->execute( $baz );
while ( @row = $sth->fetchrow_array ) {
print "@row\n";
}
Теперь я не предполагаю, что программисты действительно читают документацию (не дай бог!), но учитывая ее выдающееся положение в верхней части документации в разделе, предназначенном, чтобы показать вам, какчтобы использовать модуль, я подозреваю, что более подробный метод более предпочтителен автором модуля.Что касается того, почему, ваше предположение так же хорошо, как мое.