Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 04/02/2010, 09h58   #1
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 100
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2008
Messages : 100
Points : 29
Points : 29
Par défaut Aide sur les Procédures stockées

Bonne rencontre,

Après une recherche sur ce forum et sur la toile, j’ai l’impression qu’il y a un flou et beaucoup d’informations contradictoire sur les procédures stockées avec PHP.

J’ai déjà réalisé ce genre de travail mais avec un SGBD en MSSQL.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[]         
//On appel la procédure stockée
$stmt = mssql_init('AddAgence', $conn);
 
//On fait les binds
mssql_bind($stmt, "@Nom", $nom, SQLVARCHAR);
mssql_bind($stmt, "@fkAgence",$agencemere, SQLINT4);
 
//On injecte
$proc_result = mssql_execute($stmt);
 
// On exploite le résultat ici un seule valeur de retour                  
$row = mssql_fetch_row($proc_result)
[]
Ca fonctionne très bien et je n’ai pas rencontré de problème.

Par contre et c’est là que je suis étonné, ce n’est pas très clair avec un SGBD comme Mysql.

J’ai lu que pour utiliser une procédure stockée en PHP avec du Mysql, il fallait utiliser du mysqli ? Vrai ou faux ?

Dans ce cas et si j’ai bien compris, on doit faire comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
    $link = mysqli_connect("localhost", $username, $password, $database);
 
    $query = "CALL ps_chercher(ma, liste, de, param);";
 
    $stmt = mysqli_prepare($link, $query);
 
    mysqli_stmt_execute($stmt);
 
    mysqli_stmt_bind_result($stmt, $1, $2, $3, $4, $5);
 
    while (mysqli_stmt_fetch($stmt)) {
 
        printf ("%s - %s - %s - %s - %s<br>", $1, $2, $3, $4, $5);
 
    }
 
    mysqli_stmt_close($stmt);
 
    mysqli_close($link);
 
?>
Ou alors, on peut utiliser du PDO en utilisant ce genre de code :

Code :
1
2
3
4
5
6
7
8
9
<?php
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
 
// Appel de la procédure stockée
$stmt->execute();
 
print "La procédure a retourné : $return_value\n";
?>
Oui sauf que j’ai lu que le PDO n’était pas encore très au point… De même, pouvez-vous me dire si c’est toujours d’actualité ?

Il y a t-il d'autres méthodes ?

D'avance, merci.

Amicalement,
Cerbère.
Raphael1980 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2010, 16h31   #2
Membre régulier
 
Inscription : octobre 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 89
Points : 80
Points : 80
bonjour,

de ce que j'en sais il n'y a pas d'obligation à passer par une requete préparée pour appeler une procédure stockée, tu peux le faire par un simple $mysqli/PdoLink->query($sql). quand à l'obligation d'utiliser mysqli, je ne crois pas.

quand à pdo le driver pdo_mysql est intégré en natif avec php 5.3 comme remplacant du driver mysqlnd utilisé jusqu'ici, utilisé comme base dans des outils style doctrine. Dans un sens certainnement plus au point que ce qu'on pourrait coder à la manno.
Djef-69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 09h42   #3
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 100
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2008
Messages : 100
Points : 29
Points : 29
Merci pour ta réponse Djef-69.

Tu es la deuxième personne qui me conseil d'utiliser du PDO malgré mes appréhensions qui ne sont certainement pas fondée.

Je pense que nous allons opter pour cette technique.
Raphael1980 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 20h14.


 
 
 
 
Partenaires

Hébergement Web