baza:
Code:
mysql> select * from t5;
+----+-------+---------+
| id | ime | prezime |
+----+-------+---------+
| 1 | pera | peric |
| 2 | zika | zivotic |
| 3 | pera | konj |
| 4 | zoran | majmun |
+----+-------+---------+
4 rows in set (0.00 sec)
mysql> show create procedure x\G
*************************** 1. row ***************************
Procedure: x
sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `x`(IN uid int)
BEGIN
select ime, prezime from t5 where id=uid;
END
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)
mysql> call x(3);
+------+---------+
| ime | prezime |
+------+---------+
| pera | konj |
+------+---------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
php:
Code:
[arhimed@gedora10 ~]$ cat njnj.php
<?php
$host = '127.0.0.1';
$user = 'root';
$password = '';
$db_name = 'test';
mysql_connect($host,$user,$password,false,65536) or die(mysql_error());
mysql_select_db('test');
mysql_query("SET NAMES 'utf8'");
$res = mysql_query("CALL x(3)");
while ($row=mysql_fetch_row($res)){
echo $row[0].' '.$row[1]."\n";
}
mysql_free_result($res);
mysql_close();
?>
[arhimed@gedora10 ~]$ php njnj.php
pera konj
[arhimed@gedora10 ~]$
[/quote]
dakle kao sto vidis primer je pokupio sadrzaj koji je vratila fukncija (poseban fleg je ono 65536).
odluka tima je losa i gadno cete zazaliti zbog toga ali krajnja odluka je vasa... obrati paznju da mysql procedura ne moze da vrati "tabelu" - ovo sto se vidi u ovom primeru je generalno "fora", to sto ce "select" unutar procedure da odradi "ispis" i sto ce to onda klijent da "pokupi i izparsira" nikako nije "pravilan nacin"
mogli bi da koristite nesto tipa get_ime() i get_prezime() koje bi napravili kao funkcije - to bi imalo malo vise smisla, ili da koristite OUT varijable u proceduri (pokupite ih sa select @imevarijable - na primer:
mysql:
Code:
mysql> show create procedure y\G
*************************** 1. row ***************************
Procedure: y
sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `y`(IN uid int, OUT n char(10), OUT p char(10))
BEGIN
select ime into n from t5 where id=uid;
select prezime into p from t5 where id=uid;
END
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)
mysql>
i php:
Code:
[arhimed@gedora10 ~]$ cat njnj1.php
<?php
$host = '127.0.0.1';
$user = 'root';
$password = '';
$db_name = 'test';
mysql_connect($host,$user,$password,false,65536) or die(mysql_error());
mysql_select_db('test');
mysql_query("SET NAMES 'utf8'");
mysql_query("CALL y(3, @ime, @prezime)");
$res = mysql_query("SELECT @ime, @prezime");
while ($row=mysql_fetch_row($res)){
echo $row[0].' '.$row[1]."\n";
}
mysql_free_result($res);
mysql_close();
?>
[arhimed@gedora10 ~]$ php njnj1.php
pera konj
[arhimed@gedora10 ~]$
ovaj drugi nacin je "pravilan"