Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PDO i odzyskiwanie danych zwróconych przez procedurę
mar'kem
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.03.2007

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


Nie wiem czemu, ale kiedy wywołuję procedurę przez PDO nie zwraca mi zmiennej OUT. Sama procedura jest w porządku - uruchamiałem w phpMyAdmin i z konsoli i wszystko było ok.

  1. <?php
  2. $db = new PDO(HOST, USER, PASS);
  3. $stmt= $db->prepare('CALL rejestr_dublikaty (:typ, :nazwa, :message);');
  4. $stmt->bindParam(':typ', $typ);
  5. $stmt->bindParam(':nazwa', $nazwa);
  6. $stmt->bindParam(':message', $nic, PDO::PARAM_STR, 4000);
  7.  
  8. $stmt->execute();
  9.  
  10. print '$nic';
  11. ?>


  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `rejestr_dublikaty`(typ CHAR(5), nazwa CHAR(20), OUT message CHAR(8))


Wyświetla mi pustą stronę (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Nie mam pojęcia co jest źle

Ten post edytował mar'kem 13.03.2007, 15:25:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


  1. <?php
  2. $stmt= $db->prepare('CALL rejestr_dublikaty (:typ, :nazwa, :message)');
  3. ?>


Chyba o to mu chodzi (byl srednik w zapytaniu) i wlacz pokazywanie bledow.
Go to the top of the page
+Quote Post
mar'kem
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.03.2007

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


Usunąłem średnik ale nic się nie zmieniło.

A pokazywanie błędów mam włączone (nawet próbowałem przypisać błędne parametry to dostawałem info co jest źle i można było szybko poprawić - tu nie wiem co nie gra - dla parsera wszystko wygląda wszystko ok skoro o niczym nie pisze :/)
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


To cos z bledami jest nie tak bo jesli bylo by ok to by sie skrypt nie konczyl, bo w Twoim przypadku jak pisales dostajesz biala strone a powinno Ci wypisać $nic, chyba ze tak pisze a nie napisales o tym.

Jak wypisujesz zmienna to powinno byc bez apostrofow. czyli print $nic
To moze inaczej dopisz do funkcji mysqla cos co by modyfikowalo rekord i sprawdz czy wewnetrznie zadzia.
Go to the top of the page
+Quote Post
mar'kem
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.03.2007

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


Cytat
Jak wypisujesz zmienna to powinno byc bez apostrofow. czyli print $nic

W oryginale są " " - tutaj mi dziwnie kolorowało kod więc zmieniłem, żeby się lepiej czytało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) (sprawdziłem też bez cudzysłowów - nic nie zmieniło :/)
Cytat
To moze inaczej dopisz do funkcji mysqla cos co by modyfikowalo rekord i sprawdz czy wewnetrznie zadziała.

Dodałem insert, uruchomiłem procedurę przez PDO, nie zadziałało... Następnie napisałem to samo w phpMyAdmin i wszystko wyszło ok. Czyli coś z wywoływaniem procedury w skrypcie pokopałem. Ale co?

Ten post edytował mar'kem 13.03.2007, 18:10:37
Go to the top of the page
+Quote Post
SongoQ
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Dziwne przyklad jest taki jak w manualu tylko zamiast : przez ? bind robiony. Powienien jakis blad wywalic. Sprawdz jeszcze co daje print_r($stmt);

Napisz jeszcze jakiej wersji uzywasz bo masa bledow byla/jest z tym zwiazana.
Go to the top of the page
+Quote Post
mar'kem
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.03.2007

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


Cytat
Dziwne przyklad jest taki jak w manualu tylko zamiast : przez ? bind robiony.

Przez ? bind też próbowałem - takie same rezultaty.
Cytat
Sprawdz jeszcze co daje print_r($stmt);

Zwraca informacje o obiekcie:
PDOStatement Object ( [queryString] => CALL rejestr_dublikaty(:typ, :nazwa, :message) )

Wersja MySQLa: 5.0.37

A propos przykładu z manuala - tamtego też próbowałem (dla pewności po prostu go skopiowałem, stworzyłem też odpowiednią procedurę w MySQLu zwracającą jedną wartość) - rezultaty były takie same jak tutaj :/

Ten post edytował mar'kem 13.03.2007, 18:29:12
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Ok a wersja PHP?
Go to the top of the page
+Quote Post
mar'kem
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.03.2007

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


PHP Version 5.2.1
Go to the top of the page
+Quote Post
DeyV
post
Post #10





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




zrób jeszcze

  1. <?php
  2. $db-> $this->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  3. ?>


Pewnie baza wywala jakiś błąd, którego nawet nie zauważasz.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 06:28