Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Procedury składowe
Forum PHP.pl > Forum > Przedszkole
noob89
Witam,
Mam taki problem związany z procedurami składowymi w MySQL.
Jeśli mam w procedurze INSERT to się wykonuje ale jak już mam SELECT to mi nic nie chce wyświetlić.

Oto moja procedura:
  1. DROP PROCEDURE `SelectUser`//
  2. CREATE DEFINER=`test`@`%` PROCEDURE `SelectUser(out Id VARCHAR(255))
  3. BEGIN SELECT IdUser INTO Id FROM users LIMIT 3 ;
  4. END


I wywołuję to w PHP:
  1. <?php
  2. function debug($o)
  3. {
  4. print "<pre>";
  5. print_r($o);
  6. print "</pre>";
  7. }
  8.  
  9. $rs = mysql_query("CALL SelectUser(@Id)");
  10. $rs = mysql_query("SELECT @Id");
  11. while($row = mysql_fetch_assoc($rs))
  12. {
  13. debug($row);
  14. }
  15. ?>


W bazie mam kilka rekordów ale niestety nie zwraca mi żadnego. Co może być tego przyczyną??

Proszę o pomoc
erix
A nie powinieneś skorzystać do tego celu z widoku?
noob89
Cytat(erix @ 1.07.2009, 17:24:48 ) *
A nie powinieneś skorzystać do tego celu z widoku?


Z widoku?? A po co?? Dane pobieram tylko z jednej tabeli więc nie mam po co tworzyć widoku. A i tak zapytania miałbym takie same. No chyba że się mylę.
Potrzebuję to zrobić na procedurach a jakoś jak zapytanie zwraca jakąś wartość to mi jej nie wyświetla.
erix
http://dev.mysql.com/doc/refman/5.0/en/create-view.html

Właśnie widok IMHO byłby tu lepszym rozwiązaniem.
noob89
OK...
Jednak zostanę przy procedurach... Procedura ta zadziała jak dam na końcu LIMIT 1.
Ale teraz mam inny problem. Przy SELECT nie wyświetla mi polskich znaków... zamiast nich mam "?"...

Może ktoś się z tym spotkał i wie jak to poprawić??

W widokach też nie mam polskich znaków...

Proszę o pomoc


Zapomniałem dodać w tabele mam kodowaną w UTF-8, poszczególne kolumny też są w UTF-8, tak samo strona www...
erix
Wywołujesz gdzieś SET NAMES? Jakie kodowanie dla połączenia?
noob89
Cytat(erix @ 2.07.2009, 11:23:56 ) *
Wywołujesz gdzieś SET NAMES? Jakie kodowanie dla połączenia?


Nigdzie nie wywołuje SET NAMES... Kodowanie dla połączenia ustawione jest UTF-8...
Przy widokach poradziłem sobie z tym problemem ale musiałem zrobić typ kolumn TINYBLOB... i teraz wyświetla polskie znaki. Ale czy to jest dobre rozwiązanie??
erix
IMHO mało efektywne.

Poszukaj na tym forum o kodowaniu w MySQL.
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.