PHP Impossible de Connecter à 2 BDD PSQL

PHP Impossible de Connecter à 2 BDD PSQL - PHP - Programmation

Marsh Posté le 18-03-2020 à 14:00:39    

Code :
  1. <?php
  2. $cursor = pg_connect("host=localhost port=8787 dbname=master_base_1 user=user1 password=123" );
  3. if (!$cursor) {
  4.   echo "<br>Une erreur s'est produite.\n";
  5. }
  6. $cursor2 = pg_connect("host=localhost port=8787 dbname=master_base_requetes user=user1 password=123" );
  7. if (!$cursor2) {
  8.   echo "<br>Une erreur s'est produite.\n";
  9. }


Donc ci dessus je me connecte à 2 bases sur PSQL.
Pas de message d'erreur.
Le script fait ceci:
En fonction des cas de figure qui me sont proposés, il recopie les requêtes depuis la table située dans master_base_1 vers une table dans master_base_requetes afin de pouvoir les récupérer par la suite sans devoir se taper toute la base principale.
 
Par exemple on a ce code qui s'execute (j'ai inclus une boucle de verif, il s'execute bien):

Code :
  1. $ligne = "CREATE TABLE ".$NOM_TABLE." (ARTICLE varchar(455), TITLE varchar(255), TEXT text)";
  2.  $requete_sql = pg_query($cursor2, $ligne);
  3.  }
  4.   $ligne = "SELECT ARTICLE, TITLE, TEXT FROM TEST2 WHERE TEXT LIKE '%".$_GET['req']."%' ORDER BY ARTICLE LIMIT 100 OFFSET 0";
  5.   $requete_sql = pg_query($cursor2, $ligne);
  6.   while ($row = pg_fetch_row($requete_sql))
  7.    {
  8.     $ligne2 = "INSERT INTO ".$NOM_TABLE." (ARTICLE,TITLE) VALUES ('".$row[0]."','".$row[1]."')";
  9.     print $ligne2.'<br>';
  10.     $requete_sql2 = pg_query($cursor2, $ligne2);
  11.     echo $row[0].'<br>  '.$row[1];
  12.    }


Et donc le problème est que la table $NOM_TABLE est créée et implémentée dans la PREMIERE BDD (master_base_1) alors que je lui demande de la créer avec la liaison cursor2
Je ne comprends pas ce qu'il se passe.


---------------
http://www.ypikay.com
Reply

Marsh Posté le 18-03-2020 à 14:00:39   

Reply

Marsh Posté le 18-03-2020 à 15:22:36    

Si tu n'as pas une typo quelque part, c'est sans doute un bug du connecteur...
Apparemment y'a eu un bug de garbage avec pg_connect, ça peut être un side effect d'un fix ou un autre bug, si tu est sur de toi ouvre un ticket.
 
En attendant, essayes de faire autrement, tu peux par exemple ouvrir master_base_1,  récuperer toutes tes données les mettre dans un tableau php, fermer ton premier curseur, puis ouvrir ta 2eme connection sur master_base_requetes et créer ta table avant de faire tes inserts.
Évidement si c'est une procédure répété X fois ca vas être un peu reloud en terme de charge pour le serveur...
 
Sinon, je ne connais pas trop PSQL (et encore moins tes possibilités au niveau de la gestion de base) mais ce que je ferais moi sur Mysql si j'avais la main c'est utiliser un user qui aurait les droits READ sur master_base_1 ET WRITE sur master_base_requetes et qui ferait tout avec une seule connection en prefixant le nom de tes tables dans tes requetes avec le nom de la base de donnée.

Code :
  1. USE master_base_requetes
  2. CREATE TABLE ".$NOM_TABLE." (ARTICLE varchar(455), TITLE varchar(255), TEXT text)
  3. INSERT INTO master_base_requetes .".$NOM_TABLE." (ARTICLE,TITLE) SELECT ARTICLE, TITLE FROM master_base_1 .TEST2 WHERE TEXT LIKE '%".$_GET['req']."%' ORDER BY ARTICLE LIMIT 100 OFFSET 0


Un truc du genre...


Message édité par mechkurt le 18-03-2020 à 15:23:31

---------------
D3
Reply

Marsh Posté le 18-03-2020 à 18:47:35    

merci beaucoup du coup de main, !


---------------
http://www.ypikay.com
Reply

Marsh Posté le 18-03-2020 à 19:10:33    

Seulement, j'ai testé, en spécifiant le nom de BDD.TABLE comme avec MySQL, PostGresql m'envoie bouler...


---------------
http://www.ypikay.com
Reply

Marsh Posté le 18-03-2020 à 20:34:44    

Il faut que ton utilisateur est les droits sur le deux base de donnée (souvent quand on crée une base de donnée, on crée un utilisateur unique qui vas avec), et comme je l'ai dit, je ne connais pas assez PSQL pour savoir s'il supporte cette syntaxe...
 
Tu as un message d'erreur ?


---------------
D3
Reply

Marsh Posté le 18-03-2020 à 20:52:25    

Ben non aucun code d'erreur mais là je suis en train de recopier le code pas à pas et je vous tiendrai au courant.
Pour le moment il me semble que j'arrive à lire sur la première base et à écrire sur la deuxième. Le truc c'est que j'ai intégré tellement de conditions que je dois faire attention.


---------------
http://www.ypikay.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed