Aide sur les Procédures stockées

Rechercher

Aide sur les Procédures stockées

Par cerbere  -  4 reponses  -  Le 04/02/2010 16:21  -  Editer  - 

Bonne rencontre,

Après une recherche sur ce forum et sur la toile, jai limpression quil y a un flou et beaucoup dinformations contradictoire sur les procédures stockées avec PHP. Jai 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 nai pas rencontré de problème. Par contre et cest là que je suis étonné, ce nest pas très clair avec un SGBD comme Mysql. Jai 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 jai 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 jai lu que le PDO nétait pas encore très au point De même, pouvez-vous me dire si cest toujours dactualité ? 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 17:01  -  Haut de page  - 

Oui sauf que jai 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 17:12  -  Haut de page  - 

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 15:39  -  Haut de page  - 

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 09:50  -  Haut de page  - 

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 connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |