Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie mogę wywołać procedury w PHP
Forum PHP.pl > Forum > Bazy danych > MySQL
zwisio
Mam następującą procedurę:

Kod
DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`CheckLogin` $$
CREATE PROCEDURE `CheckLogin`(IN login varchar(20))
begin
declare statL int;
select count(*) into statL from tUserList where login = login;
select statL;
end $$

DELIMITER;


Następnie wywołuję ją w php poleceniem

  1. <?php
  2. $query = "call test.CheckLogin('jakiś_login')";
  3.  
  4. $q = mysql_query($query);
  5. ?>


i otrzymuję komunikat:

Kod
1312: PROCEDURE test.CheckLogin can't return a result set in the given context


Co trzeba zrobić, aby otrzymać zbiór wynikowy?questionmark.gif

Z góry dziękuję za pomoc
SongoQ
Moze takie cos?

  1. SELECT count(*)
  2. INTO statL FROM tUserList WHERE login = login;
  3. RETURN statL;
zwisio
Niestety nie, muszę zrobić procedurę, ponieważ funkcje nie zwracają recordsetów sad.gif
SongoQ
Ale w tym przypadku moze byc zwykla funkcja ktora zwraca 1 lub 0 w zaleznosci czy istnieje.
Bo zgodnie z tym co napisales to dostajesz 1 wartosc.

Jesli chesz przez procedure to zgodnie z tym co pisze w manualu musisz trosze inaczej zadeklarowac http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html
zwisio
już rozwiązałem ten problem, trzeba połączyć się przez funkcjię myslqi_real_connect()

kod wygląda następująco:

  1. <?php
  2. $db = mysqli_init();
  3.  
  4. mysqli_options($db, MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT=0");
  5. mysqli_options($db, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
  6.  
  7. @mysqli_real_connect($db, MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
  8.  
  9. if ( mysqli_connect_errno() )
  10. {
  11. printf("DB Error: %sn", mysqli_connect_error());
  12. exit();
  13. }
  14. ?>
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.