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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.