Citat:
Milan M. Radovic: Pa ja ustvari ne pisem upit u PHPu (SELECT.. blabla..etc) vec pozivam proceduru... e tu koliko sam citao MySQL ne shvata kako da vrati rezultat. kod mene se u proceduri nalazi samo jedan SELECT upit po pravilu... I sa tim flagom radi na loopiji,ali kod mene ne..Evo upravo sam instalirao opet Debian Lenny i namestio sve... pa da probam ponovo da nadjem nacin da i ovaj moj mysql server radi lepo.
bez da ti se mesam u organizaciju, ali to ti je mnogo nesiguran nacin da radis ... ti tuces php sa "interactive" flegom da bi ti mysql vratio "debug output" is stored procedure a ti onda to koristis kao rezultat.... sutra ce mysql da odluci da ne salje taj debug output ni interactive klijentima i sve ce da ti padne u vodu ... ili ce php konektor da izignorise debag output iz stored procedure cak i ako je setovan interactive flag... stored procedura je "procedura" - ne vraca rezultat ... mysql ne ume da vrati matricu kao rezultat stored "bilocega" .. ni funkcijom ni procedurom, a sve "fore" da se iz debug outputa izvadi info rade "sad pa ko zna kad" ..
generalno ako u connect setujes "sve" flegove (65536)
$this->link=mysql_connect($sql_hostname.":".$sql_port, $sql_username, $sql_password,TRUE, 65536) or $this->error();
to bi trebalo da sljaka .. "privremeno" ... dakle mozda sutra opet nece ... sve zavisi od php konektora .. mozda u 5.2 fleg ne bude 2 bajta nego 4 .. mozda .. mozda ..
dakle stored procedura - ne vraca nista ... to je kao da si iz mysql_query() pozvao update ili insert ili delete .. ako imas out parametre to ne znam dal standardno ume da hendluje obican mysql konektor (mysqli bi trebalo da radi sa tim ok) ali da ti u stored proceduri uradis nesto tipa
Code:
mysql> show create procedure tete\G
*************************** 1. row ***************************
Procedure: tete
sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `tete`()
begin
select 1,2,3,4,5;
end
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: latin1_swedish_ci
1 row in set (0.01 sec)
i onda da to vadis sa:
Code:
[arhimed@gedora10 bin]$ cat x.php
<?php
mysql_connect(":/tmp/mysql.sock", "root", "", true, 65536)or die("kukuriku");
mysql_select_db("test") or die ("meeeee");
echo "-----------\n";
$res = mysql_query("call tete()");
while ($row=mysql_fetch_row($res)){
foreach ($row as $i=>$j) echo $i. " ". $j."\n";
}
echo "-----------\n";
?>
[arhimed@gedora10 bin]$ php x.php
-----------
0 1
1 2
2 3
3 4
4 5
-----------
moze - ali ne valja
ako se ja dobro secam na loopia je 5.1 php .. tebi je kod kuce verovatno 5.2 ... moguce je da je fleg pomeren na 5.2 .. (evo sa 65536 radi )
EDIT:
zaboravih na detalj ... umesto da koristis stored procedure, sto ne koristis view?
http://dev.mysql.com/doc/refman/5.0/en/create-view.html
[Ovu poruku je menjao bogdan.kecman dana 05.12.2009. u 08:56 GMT+1]