PHP PDO: Récupérer les notes du serveur de bases de données

Certaines bases de données comme Oracle et PostgreSQL – MySQL le fait partiellement – renvoient des notes (notices en anglais) concernant une requête ALTER, UPDATE ou DELETE. Il est même possible de renvoyer des notes sous PostgreSQL et Oracle en faisant respectivement RAISE NOTICE et DMBS_OUTPUT.PUT_LINE. Ces informations peuvent parfois être retournée depuis les drivers de base de la base de données mais pas avec PDO.

Note: Ces patchs sont créés et testés pour PHP 5.3 uniquement.

Accèder à la page du projet PDO – Notices


Un patch pour PDO

Pour ajouter cette fonctionnalité, j’ai créer un patch qui créé:

  • Une fonction array PDO::noticeInfo. Elle s’appelle donc de cette manière:
  • Les champs internes appropriés à contenir les notes envoyées par les différents drivers de PDO

Les notes ne sont collectées que si le paramètre PDO::ATTR_LOG_NOTICES est à la valeur PDO::NOTICES_FETCH. Par défaut, la valeur est PDO::NOTICES_NONE. Cela implique donc que vous devez fixer ce paramètre. Vous avez deux possibilités:

      Dès la création de l’instance de PDO.
      En utilisant setAttribute.

Téléchargez le patch à cette adresse: http://www.sroze.io/uploads/2009/10/php-5_3-pdo-notices-managment.patch

Un patch pour chaque driver de PDO

La gestion et l’expression des notes se fait de manière différente pour chaque système de bases de données, c’est pourquoi il faut faire un système de récupération des notes pour chaque driver de PDO. Actuellement, j’ai créer qu’un patch pour PostgreSQL. Néanmoins, je vais très probablement bientôt en faire pour Oracle et MySQL.

PostgreSQL – Notices

Pour PostgreSQL, voici le patch à exécuter: http://www.sroze.io/uploads/2009/10/php-5_3-pdo-pgsql-notices-managment.patch

N’hésitez pas à me faire parvenir vos retours !

facebooktwittergoogle_plusredditpinterestlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">