Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Procedura i kilka w niej selectów
jajcarzd1
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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.


--------------------
My mind is glowing ...
Jeśli pomogłem push the button :)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
matix
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


A czy przypadkiem nie wystarczy:

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

?


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
Go to the top of the page
+Quote Post
jajcarzd1
post
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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.


--------------------
My mind is glowing ...
Jeśli pomogłem push the button :)
Go to the top of the page
+Quote Post
matix
post
Post #4





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


Pokaż tę klasę w takim razie, bez tego nie wiele Ci tutaj pomożemy.


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
Go to the top of the page
+Quote Post
jajcarzd1
post
Post #5





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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 ?


--------------------
My mind is glowing ...
Jeśli pomogłem push the button :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:35