Aide sur les Procédures stockées - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Aide sur les Procédures stockées

Par cerbere -  4 reponses -  Le 04/02/2010 -  Flux RSS - 

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.

[]
//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 :

<?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 :

<?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.

 

Réponses apportées à cette discussion

Par Cyrano -  Le 04/02/2010 - 

Oui sauf que j’ai lu que le PDO n’était pas encore très au point…

Ça sort d'où ça ? As-tu testé et eu des difficultés avec ça ?

 
Par cerbere -  Le 04/02/2010 - 

Lu sur le web dieu sait où et j'ai eu quelques échos de prof ou encore d'autres personnes qui utilisent un peu de PHP.

J'ai déjà effectivement testé et je n'ai pas eu de problème mais mes tests n'était pas très compliqués.

Enfin c'est le flou, c'est d'ailleurs pour ça que je pose la question. ;)

Je peux utiliser cette technologie les yeux fermer ?

 

 
Par Cyrano -  Le 05/02/2010 - 

Je n'irai peut-être pas jusqu'à dire «les yeux fermés», mais tu peux avantageusement utiliser PDO. Ça présentera en outre l'avantage de pouvoir basculer vers un SGBD ou l'autre avec beaucoup moins de problèmes de compatibilité. C'est du reste l'intérêt majeur des couches d'abstractions Là, tu utilises MS-SQL, mais tu pourrais reproduire exactement la même chose avec Oracle, MySQL ou pourquoi pas DB2 sans changer quoique ce soit dans ton code PHP. Bien entendu il resterait des problèmes de portabilité des procédures stockées sur ces différents SGBDs, mais le problème est alors dans la base de données, pas du coté applicatif.

 
Par cerbere -  Le 08/02/2010 - 

Merci pour ta réponse Cyrano.

Nous allons probalement utiliser PDO.

En plus, si j'ai bien vu avec la version 5.3 le driver PDO est intégré en natif.

 

 

 

 

 

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !