IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PHP-PDO-MySQL connection 'persistante' et stored-procedures


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut PHP-PDO-MySQL connection 'persistante' et stored-procedures
    Je développe un site avec AJAX sur une base MySQL, cherchant à optimiser les ressources du serveur et les temps de réponse je transpose toutes les requêtes du code PHP en stored-procedure.

    Exemple de code PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    	include("glob_min.php");
    	header('Content-type: application/xml; charset=ISO-8859-15');	
    	$xml = '<?xml version="1.0" encoding="ISO-8859-15"?><results action= "test">';
    	$BD1 = new PDO('mysql:host=localhost;dbname=' . $_SESSION['base'], $_SESSION['log'], $_SESSION['pwd']);			
    	$proc = $BD1->prepare("CALL lst_bou()");
    	$proc->execute();
            $html = '';			
    	while ($row = $proc->fetch())
    	{
    	       $html .= '<a href="" title="Voir les produits de cette boutique..."><img src="' . $row[1] . '/boutique_' . $row[1] . '.png"></a>';
    	}
    	$xml .= '<![CDATA[' . $html . ']]></results>';
    	echo $xml;	
    ?>
    J'ai plusieurs page PHP comme celle-ci qui vont utiliser mes stored-procedure, j'aurais donc voulu ne faire qu'une seule fois l'ouverture de la base $BD1, et le $proc[n] = $BD1->prepare de chaque procedure stockée, dans une page php appelée une seule fois à la connection de l'utilisateur. Ce qui, à mon avis serait le plus rapide ?

    Le(s) problème(s) que je rencontre est/sont :
    - la base $BD1 se referme une fois le script PHP terminé (connection persistante ?),
    - le seul moyen que je connaisse pour partager des variables entre pages PHP, c'est $_SESSION[] ?

    J'ai donc essayé ceci dans ma page 'globale' (appelée une seule fois) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $BD1 = new PDO('mysql:host=localhost;dbname=' . $Params[0], $Params[1], $Params[2]);
    $_SESSION['lst_bout'] = $BD1->prepare("CALL lst_bou()");
    puis j'ai modifié le premier code en essayant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $proc = $_SESSION['lst_bout']; 
    $proc->execute();
    ...
    Le message d'erreur est :
    Call to a member function execute() on a non-object

    Donc si vous avez des idées pour y arriver je suis preneur !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    le seul moyen que je connaisse pour partager des variables entre pages PHP, c'est $_SESSION[] ?
    Les ressources ne peuvent pas être placées en session.
    Tu es obligé d'amorcer une connexion.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [MySQL] Connection PDO MySQL PHP
    Par Xeis02 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/04/2015, 23h44
  2. [MySQL] PHP, PDO et "Lost connection to MySQL server during query"
    Par gui38 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 12/10/2011, 11h12
  3. [SGBD] PHP et MYSQL "Connection Impossible"
    Par saidus dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/10/2005, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo