|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 40 ![]() |
Bonsoir à tous,
débutant en PHP, je travaille sous Eclipse 3.2 avec le plug-in PHPEclipse sous Windows XP SP2. J'essaye d'accèder à la table CD (contenant 3 enregistrements) d'une base de données Postgresql (nommée elle aussi CD) comme suit : Code :
Citation:
Et apparemment le second pg_get_result ne retourne rien du tout (d'où le message d'erreur final) mais je ne comprends pas pourquoi ! Y aurait-il une âme charitable pour m'expliquer où je me trompe ? Merci d'avance ! Mafate |
|||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Bonjour,
pg_send_query() et pg_get_result() servent pour des requêtes asynchrones, c'est à dire que le script PHP continue à s'exécuter tandis que Postgres exécute la requête. Le problème ici est que la deuxième requête est envoyée alors que Postgres est encore à traiter la première. Il faut que tu fasses une boucle qui teste pg_connection_busy() avant de lancer une nouvelle requête. Visiblement, tu t'es inspiré de l'exemple fourni dans la doc PHP, dans lequel ces tests ne figurent pas. Je te déconseille toutefois d'utiliser les fonctions asynchrones, qui ne sont utiles que dans des cas assez particuliers. Utilise plutôt pg_query(), le code sera nettement plus simple.
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 40 ![]() |
Bonjour GrandFather,
merci beaucoup pour ta réponse ! Je vais essayer cela ce soir, j'ai hâte d'aller boucler ! Bonne journée, Mafate PS. : je vois que tu es modérateur. Je te signale que dans un second temps j'ai posté cette question sur un autre forum du site (ici) parce que l'endroit me semblait plus approprié. Désolé pour le doublon, je ne suis pas encore très habitué à developpez.net ! |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 40 ![]() |
Euh, je pense à quelque chose d'un coup : je comprends bien avec ton explication que ma seconde requête ne fonctionne pas mais comment expliquer que le pg_num_rows de ma première requête me retourne 0 ligne au lieu des 3 présentes dans ma table ??
Merci, Mafate |
|
|
00
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Citation:
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
|
00
|
|
|
#6 | |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 40 ![]() |
Citation:
Merci pour ton aide !
|
|
|
|
00
|
|
|
#7 | ||||
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 40 ![]() |
Bonjour tout le monde !
Bon, GrandFather j'ai essayé de faire comme tu m'as dit en testant pg_connection_busy() avant de lancer une nouvelle requête mais je n'ai jamais réussi qu'à obtenir le message d'erreur précédemment cité... Par contre, avec le code suivant... Code :
Citation:
Citation:
Mafate |
||||
|
|
00
|
|
|
#8 | ||
|
Membre habitué
![]() Inscription : mai 2003 Messages : 140 ![]() |
PostgreSQL est sensible à la casse !
Donc si ta table est en majuscules alors tu dois mettre des guillemets autour. Code sql :
Comme te l'a dis GrandFather, utilise des fonctions synchrones car sinon tu sera toujours obligé d'attendre le résultat en testant dans une boucle. |
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Pourquoi tu t'obstines à utiliser des fonctions asynchrones !?
Enfin... Pour que ça marche correctement, place chaque pg_send_query() dans une boucle while qui teste pg_connection_busy().
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
J'ajouterais qu'il est même dommage de s'ennuyer avec cette librairie de fonctions pg_***. L'extension PDO est bien plus rapide et plus portable d'un SGBD à un autre.
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 40 ![]() |
Bonsoir,
merci pour vos réponses. Je sais que mon attitude peut faire "tête de mule" , mais croyez-moi, il n'en est rien. Je vais suivre vos conseils et utiliserai les fonctions synchrones pour mes développements futurs. Je voulais juste essayer de résoudre le problème auquel j'avais été confronté par pure curiosité, pas pour m'en servir après (enfin, sauf si le besoin s'en fait sentir bien-sûr ! Je vais donc essayer à mon retour de congés tes recommandations GrandFather, j'espère que je ne vais pas trop m'emmêler les pinceaux ! Alexandre, peux-tu m'en dire un peu plus sur les librairies de fonctions pg_*** et sur l'extension PDO ? Où puis-je trouver des infos intéressantes sur cette extension PDO, les fonctions qu'elle propose et leur utilisation avec PostgreSQL ? Merci d'avance, Mafate PS. : si vous me répondez, je ne pourrai pas vous répondre à mon tour avant 15 jours, car je pars en congés. Je ne manquerai pas bien-sûr de le faire à mon retour. |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Depuis la version 5, l'extension PDO est devenu une bibliothèque interne. Donc on s'en sert exactement comme d'une autre fonction.
Tout est là : http://fr3.php.net/manual/fr/ref.pdo.php A l'occasion je rédigerais un tutoriel, mais je suis débordé en ce moment. Sinon, dans mon livre j'y consacre un chapitre complet.
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
00
|
|
|
#13 | |
|
Invité(e)
Messages : n/a ![]() |
Citation:
Je trouve la discussion intéressante. Je suis toujours, dans le cadre du devéloppement de mon appli en intranet, de performance et de simplicité. Le monde du développement est vaste et on en apprend tous les jours! C'est dur d'être au top. Concernant ce module PDO, dis moi dans ton livre qui s'adresse aux utilisateurs PHP/MySQL, y a t-il suffisamment d'info pour s'en sortir avec PostgreSQL? Je suis pour le support papier quand il s'agit de lire, plus que l'écran!!!! |
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Citation:
C'est aussi simple à utiliser que les fonctions mysql_* et pg_* ! Pour synthétiser : Les avantages de PDO sont les suivants : * Portabilité du code pour une application compatible avec plusieurs SGBDR (Pas besoin d'utiliser un abstracteur de base) * Rapidité de la connexion et des échanges. Tout le code a été réécrit en C et est étonnament plus rapide qu'une connexion native * Comparé à des abstracteurs comme PEAR: Je devais écrire un article comparatif avec des mesures mais mon planning ne me le permet pas en ce moment.
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
|
00
|
|
|
#15 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Citation:
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com