Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP Impossible de Connecter à 2 BDD PSQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP Impossible de Connecter à 2 BDD PSQL

n°2348567
erwan83
Du Shift DEL tu te méfieras !
Posté le 18-03-2020 à 14:00:39  profilanswer
 

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
mood
Publicité
Posté le 18-03-2020 à 14:00:39  profilanswer
 

n°2348575
mechkurt
Posté le 18-03-2020 à 15:22:36  profilanswer
 

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
n°2348595
erwan83
Du Shift DEL tu te méfieras !
Posté le 18-03-2020 à 18:47:35  profilanswer
 

merci beaucoup du coup de main, !


---------------
http://www.ypikay.com
n°2348600
erwan83
Du Shift DEL tu te méfieras !
Posté le 18-03-2020 à 19:10:33  profilanswer
 

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


---------------
http://www.ypikay.com
n°2348608
mechkurt
Posté le 18-03-2020 à 20:34:44  profilanswer
 

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
n°2348610
erwan83
Du Shift DEL tu te méfieras !
Posté le 18-03-2020 à 20:52:25  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP Impossible de Connecter à 2 BDD PSQL

 

Sujets relatifs
PHP : bug avec strtotime[POSTGRESQL] Visualisation BDD TABLES etc
[PHP] - Extraire chemins des fichiers mp3 dans balise audioSite one page, bootstrap 4 et validation PHP
[PHP] - nesbot/Carbon: diffForHumans() amène une erreur 500Fonction mail() de PHP avec plusieurs serveurs SMTP
RechercheV en PHP ?Erreur Excerpt - Impossible d'enregistrer une page du thème
Stockage de mots de passe dans une BDD (en clair ?)[PHP] Remplacer des mots dans une string par des valeurs d'un tableau
Plus de sujets relatifs à : PHP Impossible de Connecter à 2 BDD PSQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR