Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Procedura i kilka w niej selectów
Forum PHP.pl > Forum > PHP
jajcarzd1
Witam

Mam takie pytanie dotyczące procedur w Mysql bo zacząlem je dopiero ogarniać.

Tworząc taka procedurę

  1. mysql> CREATE PROCEDURE proc06 ()
  2. -> BEGIN
  3. -> DECLARE napis CHAR(4) DEFAULT 'zewn';
  4. -> BEGIN
  5. -> DECLARE napis CHAR(4) DEFAULT 'wewn';
  6. -> SELECT napis;
  7. -> END;
  8. -> SELECT napis;
  9. -> SET napis = 'pqrs';
  10. -> SELECT napis;
  11. -> END;//
  12.  


I wywołując ją z lini poleceń otrzymuję wynik typu

  1. mysql> CALL proc06 () //
  2. +-------+
  3. | napis |
  4. +-------+
  5. | wewn |
  6. +-------+
  7. 1 row IN SET (0.00 sec)
  8. +-------+
  9. | napis |
  10. +-------+
  11. | zewn |
  12. +-------+
  13. 1 row IN SET (0.00 sec)
  14. +-------+
  15. | napis |
  16. +-------+
  17. | pqrs |
  18. +-------+
  19. 1 row IN SET (0.00 sec)
  20. Query OK, 0 rows affected


Natomiast wywołując z poziomu PHP

  1. $db->query('call proc06()');


Otrzymuje wynik tylko

  1. (
  2. [0] => Array
  3. (
  4. [napis] => wewn
  5. )
  6.  
  7. )


czyli tylko z zakresu wewnętrznego. Czy można uzyskać podobnie jak przy lini poleceć wynik wszystkich selectów ?

Dzięki i pozdrawiam.
matix
A czy przypadkiem nie wystarczy:

Kod
$db->query('call proc06()')->fetchAll();

?
jajcarzd1
Cytat(matix @ 22.04.2010, 17:52:54 ) *
A czy przypadkiem nie wystarczy:

Kod
$db->query('call proc06()')->fetchAll();

?



Na akurat nie bo to jest moja klasa do obsługi bazy danych więc sama metoda query wykonuje już zapytanie typy mysql_query i mysql_fetch_row() tworząc tablicę dwuwymiarową z rekordami, więc to akurat nie ma znaczenia.
matix
Pokaż tę klasę w takim razie, bez tego nie wiele Ci tutaj pomożemy.
jajcarzd1
Cytat(matix @ 22.04.2010, 19:12:32 ) *
Pokaż tę klasę w takim razie, bez tego nie wiele Ci tutaj pomożemy.


To jest poniższa metoda i nei wiele tu się dzieje ciekawego

  1.  
  2. private function SendQuery($sql){
  3.  
  4. $this->queryNo++;
  5. return @mysql_query($this->query);
  6.  
  7. }
  8.  
  9.  
  10. public function query($sql){
  11.  
  12.  
  13. if(!$result = $this->SendQuery($this->query)){
  14. $this->ActivityLoger(mysql_errno(), mysql_error(), $this->query);
  15. throw new Exception(Reports::getMessage('dbTake'));
  16. }
  17.  
  18. $all = Array();
  19.  
  20. $this->rows = @mysql_num_rows($result);
  21. $this->fields = @mysql_num_fields($result);
  22.  
  23. for($i=0; $i<$this->rows; $i++) {
  24. $all[$i] = @mysql_fetch_row($result);
  25. }
  26.  
  27. return $all;
  28.  
  29.  
  30. }


NO i jak tam jakieś pomysły ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.