mysql_affected_rows

mysql_affected_rows -- Vrátí počet ovlivněných (změněných) záznamů v MySQL po posledním dotazu

Popis

int mysql_affected_rows ( [resource spojeni])

mysql_affected_rows( ) vrátí počet záznamů ovlivněných posledním použitím dotazu INSERT , UPDATE nebo DELETE , kterému odpovídá spojeni . Není-li identifikátor spojení uveden , použije se poslední spojení otevřené pomocí mysql_connect( ) .

Poznámka : Používáte-li transakce , je nutné mysql_affected_rows( ) volat po dotazu INSERT , UPDATE nebo DELETE , nikoli hned po potvrzení transakce .

Byl-li poslední dotaz DELETE bez části WHERE , budou smázany všechny záznamy z tabulky , ale tato funce vrátí nulu .

Poznámka : Při použití UPDATE , MySQL neuloží sloupce , ve kterých je nová hodnota shodná s původní . Toto může způsobit , že mysql_affected_rows( ) nemusí vždy přesně souhlasit se skutečným počtem ovlivněných řádků .

mysql_affected_rows( ) nelze použít s dotazy SELECT , ale jen s takovými , které mění záznamy . K zjištění počtu řádků vrácených dotazem SELECT použijte funkci mysql_num_rows( ) .

Je-li poslední dotaz chybný , funkce vrátí -1 .

Příklad 1 . Dotaz typu DELETE ( mazání )

 
?php

 
/

 
*

 
připojení

 
k

 
databázi

 
*

 
/

 
mysql_pconnect(

 
"localhost"

 
,

 
"mysql_uziv"

 
,

 
"mysql_heslo"

 
)

 
or

 
die

 
("Nelze

 
se

 
připojit")

 
;

 
/

 
*

 
tohle

 
vrátí

 
správný

 
počet

 
smazaných

 
záznamů

 
*

 
/

 
mysql_query("DELETE

 
FROM

 
moje_tabulka

 
WHERE

 
id

 
10")

 
;

 
printf

 
("Smazáno

 
záznamů

 
:

 
%d\n"

 
,

 
mysql_affected_rows())

 
;

 
/

 
*

 
bez

 
použití

 
klauzule

 
where

 
v

 
dotazu

 
typu

 
DELETE

 
,

 
bude

 
vrácena

 
0

 
*

 
/

 
mysql_query("DELETE

 
FROM

 
moje_tabulka")

 
;

 
printf

 
("Smazáno

 
záznamů

 
:

 
%d\n"

 
,

 
mysql_affected_rows())

 
;

 
?



Předchozí příklad by měl následující výstup :

 
Smazáno

 
záznamů

 
:




 
10

 
Smazáno

 
záznamů

 
:









Příklad 2 . Dotaz typu UPDATE ( změna )

 
?php

 
/

 
*

 
připojení

 
k

 
databázi

 
*

 
/

 
mysql_pconnect(

 
"localhost"

 
,

 
"mysql_uziv"

 
,

 
"mysql_heslo"

 
)

 
or

 
die

 
("Nelze

 
se

 
připojit")

 
;

 
/

 
*

 
Změna

 
záznamů

 
*

 
/

 
mysql_query("UPDATE

 
moje_tabulka

 
SET

 
used=1

 
WHERE

 
id

 
10")

 
;

 
printf

 
("Změněno

 
záznamů

 
:

 
%d\n"

 
,

 
mysql_affected_rows())

 
;

 
mysql_query("COMMIT")

 
;

 
?



Předchozí příklad by měl následující výstup :

 
Změněno

 
záznamů

 
:











Dále také : mysql_num_rows( ) , mysql_info( ) .