Bonjour,

Voici plusieurs jours que je bloque sur un truc qui me parait pourtant très simple.
Je ne trouve pas d'exemple, de tuto, ni d'aide sur cela.

Je vous explique...

Je voudrais faire une procédure stockée en postgresql qui renvoie deux jeux de résultats.

Par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
--
-- Name: testdle8(); Type: FUNCTION; Schema: public; Owner: admin
--
 
CREATE FUNCTION testdle8() RETURNS SETOF record
    AS $$SELECT 123 AS truc1 ;
SELECT u_id AS truc2 FROM utilisateur ;
SELECT 456 AS truc3 ;$$
    LANGUAGE sql;
ALTER FUNCTION public.testdle8() OWNER TO admin;
[/code]

NB : Ne cherchez pas de cohérence entre les deux requètes, il n'y en a pas dans cet exemple ;-)

Puis, dans mon code PHP, je voudrais pouvoir afficher les noms des utilisateurs puis les titres des actualités.

Voilà, c'est aussi simple que cela.

Lorsque je fait cela et que j'appelle ma fonction, seul le dernier jeu de résultats est accessible. Aussi bien directement sur phpPgAdmin qu'en php...

Pour finir, mon 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
17
18
19
20
21
22
23
 
<?php 
try {
    $hostname = "localhost";
    $dbname = "db";
    $username = "login";
    $pw = "pwd";
    $pdo = new PDO ("pgsql:host=$hostname;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }
      $query = $pdo->prepare("select testdle8()");
      $query->execute();
 
      for($i=0; $row = $query->fetch(); $i++){
	var_dump($row) ;
        echo $i." - ".$row[0]."<br/>";
      }
 
      unset($pdo);
      unset($query);
?>
Merci pour votre aide...
David