Cette section traite de questions relatives aux relations entre PHP et les bases de données. Oui, PHP peut accéder virtuellement à n'importe quelle base de données disponible aujourd'hui.
62.1. | J'ai entendu dire qu'il était possible d'accéder à Microsoft SQL Server à partir de PHP. Comment est-ce possible ? |
Sur une machine Windows, vous pouvez tout simplement utiliser le support ODBC inclus avec le pilote ODBC adéquat. Sur des machines Unix, vous pouvez utiliser le pilote Sybase-CT pour accéder à Microsoft SQL Server car il est (en grande partie) compatible. Sybase a fourni une » version libre des bibliothèques nécessaires pour Linux . Pour les autres systèmes Unix, vous devez contacter Sybase pour obtenir les bibliothèques adéquates. Jetez aussi un oeil à la réponse à la question suivante. |
|
62.2. | Puis-je accéder à des bases Microsoft Access ? |
Oui. Vous avez déjà tous les outils nécessaires si vous utilisez uniquement Windows 9x/Me, ou NT/2000, et que vous utilisez ODBC avec les pilotes ODBC pour Microsoft Access. Si vous utilisez PHP sur une machine Unix et que vous voulez vous connecter à une base Access sur une machine Windows, vous aurez besoin des pilotes ODBC Unix. » OpenLink Software fournit des pilotes ODBC pour Unix qui peuvent le faire. Une autre solution consiste à utiliser un serveur SQL qui a des pilotes ODBC Windows et l'utiliser pour stocker les données, que vous pouvez utiliser à partir de Microsoft Access (en utilisant ODBC) et PHP (en utilisant les pilotes inclus), ou bien utiliser un format de fichier intermédiaire que Access et PHP peuvent traiter tous les deux, comme des fichier bruts ou des bases de données dBase. À ce sujet, Tim Hayes de Openlink software écrit :
Une solution qui a fait ses preuves est d'utiliser MySQL et ses pilotes ODBC sous Windows et de synchroniser les bases de données. Steve Lawrence écrit :
Trucs et astuces :
|
|
62.3. | J'ai mis à jour vers PHP 4, et maintenant MySQL me dit toujours "Warning: MySQL: Unable to save result set in ...". Que se passe-t-il ? |
Il est quasiment sûr que PHP 4 a été compilée avec l'option --with-mysql sans donner le chemin vers MySQL. Cela signifie que PHP utilise sa bibliothèque cliente MySQL incluse. Si votre système exécute des applications qui utilisent d'autres versions de clients MySQL, comme PHP 3 en module Apache concurrent, ou auth-mysql, il y a un conflit entre les deux versions de ces bibliothèques clientes. Recompiler PHP 4 et ajouter le chemin vers MySQL avec l'option '--with-mysql=/votre/chemin/vers/mysql ' résout généralement le problème. |
|
62.4. | PHP 5 n'inclut plus les bibliothèques clientes MySQL, qu'est ce que ça implique pour moi ? Puis-je toujours utiliser MySQL avec PHP ? J'essaie d'utiliser MySQL, mais j'obtiens des erreurs "undefined function". |
Oui. PHP supportera toujours MySQL, d'une façon ou d'une autre. Le seul changement avec PHP 5 est que nous ne compilons plus la bibliothèque cliente en elle-même. En voici en vrac quelques justifications :
Ceci n'affectera pas tant que ça les utilisateurs. Les utilisateurs d'Unix, au moins ceux qui savent ce qu'ils font, ont tendance à compiler PHP avec les bibliothèques déjà installées sur leur système, simplement en spécifiant --with-mysql=/usr lors de la configuration de PHP. Les utilisateurs de Windows peuvent activer l'extension php_mysql.dll dans leur php.ini . Pour plus de détails, lisez la référence MySQL sur les instructions d'installation. Assurez-vous également que libmysql.dll est disponible dans le PATH du système. Pour plus de détails sur cela, lisez la FAQ sur la configuration du PATH sur les systèmes Windows . Comme libmysql.dll (et plusieurs fichiers relatifs à PHP) existe dans le dossier de PHP, il est recommandé d'ajouter le dossier de PHP à votre PATH système. |
|
62.5. | Après avoir ajouté le support partagé de MySQL, Apache plante dès que libphp4.so est chargé. Comment résoudre ce problème ? |
Ceci arrive quand vos bibliothèques MySQL sont liées à pthreads. Vérifiez que vous utilisez ldd. Sinon, téléchargez les sources de MySQL et compilez-les ou bien refaites un paquet RPM à partir des sources en enlevant l'option qui active le client threadé dans le fichier de spec. L'une ou l'autre de ces solutions corrigera le problème. Recompilez alors PHP avec les nouvelles bibliothèques MySQL. |
|
62.6. | Pourquoi est ce que j'obtiens une erreur comme celle-ci : "Warning: 0 is not a MySQL result index in <file> on line <x>" ou "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>" ? |
Vous essayez d'utiliser un identifiant de résultat qui vaut 0. Le 0 indique que votre requête a échoué pour une quelconque raison. Vous devez alors chercher les erreurs après avoir exécuté une requête et avant même de vouloir traiter le résultat. Une façon propre de le faire est de coder comme ceci : |