Attention ! pour lever les erreurs de pdo c'est catch(PDOException $e). Sans le préfixe PDO c'est pour lever les erreurs de PHP et non pas les erreurs de PDO. D'ailleurs, si besoin on peut chainer les deux, un catch(PDOException $e) pour lever les erreurs PDO et un catch (Exception $e) pour lever les erreurs PHP si tu utilises du code php qui émet des exceptions ou si tu les crées toi-même avec throw new Exception.
exec retourne le nombre de lignes affectées, donc si tu crée une table $stmt va retourner 0. Et si tu faisais plutôt une requête préparée ? Après il existe aussi la syntaxe CREATE TABLE IF NOT EXISTS si tu n'as pas besoin d'avoir des fonctions distinctes.
Autre chose, tu peux mettre n'importe quel code dans le catch. Si tu veux retourner l'erreur sans être éjecter de la page tu peux tout aussi bien faire $erreur = $e->getMessage() puis utiliser $erreur pour l'afficher où tu veux dans ta page.
Et houla que c'est pas beau les variables globales. Bon là tu ne t'en sert pas, tu pourrais donc la supprimer, mais ça aussi ça fait partie de l'ancien temps. Soit tu passes ta variable en paramètre dans tes fonctions ou dans l'initialisation de tes classes, soit tu utilises une constante.
Heu non c'est pas tout à fait ça la programmation orienté objet, un objet c'est... une classe.
Et au fait si tu nous faisais une petite classe pour grouper les deux fonctions ci-dessus si tu as réellement besoin d'en avoir deux.
Après la programmation objet ne se résume pas à grouper des fonctions dans une classe. C'est un début mais cela ne se résume pas à ça. Cela peut servir pour créer plusieurs instances, pour partager des variables communes entre différentes fonctions, pour hériter d'autres classes ou de collections de fonctions (trait) qui seront accessibles via le même objet, pour configurer des objets etc. Comme déjà dit, tu peux regarder les exemples des scripts côté formulaire ou côté serveur dans ce module d'upload pour te donner un exemple concret et utilisable. Cela sert à faciliter l'usage et la programmation en fournissant des méthodes utiles sans avoir à se soucier de tout le bin's qu'il y a derrière pour faire marcher l'ensemble. Un module équivalent ne pourrait pas se faire en utilisant uniquement des fonctions, ou alors se serait ingérable et très compliqué à utiliser.
Sinon l'exemple type qu'on voit dans les tutos est la création de personnages de jeux ou encore de paniers d'achats, enfin bref dans tous les cas on utilise des classes, c'est cela la POO. Quant à PDO - PHP Data Objects - c'est une interface qui te permet d'avoir facilement accès aux données, et l'on voit le typique "->" qui caractérise l'utilisation des classes et l'orientation objet de cette interface.
Après MVC est encore autre chose, c'est un modèle d'architecture pour séparer les différentes couches, mais cela ne présume pas de la proportion de code procédural, de fonctions ou de classes qu'on utilise pour obtenir cette architecture. Si tu utilises un framework MVC ce sera systématiquement de la POO, mais d'un autre côté cela ne veut pas dire que tu ne pourras pas y intégrer du code procédural. Bref on peut tout mélanger, mais quelque soit l'architecture utilisée on utilise souvent une bonne proportion de classes pour faciliter la maintenance et la programmation. Cette proportion peut varier, mais si tu n'en utilise pas c'est clairement pas assez, surtout pour un projet from scratch qui ne concerne pas qu'une page de code mais tout un site.
EDIT Pour rappel je t'ai répondu dans mon message précédent pour le htmlspecialchars et c'est important. Je te le rappelle car comme je viens d'entamer une nouvelle page tu ne le verra pas si tu ne regardes que le dernier message.