Forum und email

mysql_affected_rows

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_affected_rows — Find ud af hvor mange rækker der blev berørt af sidste MySQL kald

Beskrivelse

int mysql_affected_rows ([ resource $link_identifier ] )

Find ud af hvor mange rækker, der blev berørt, af den sidste INSERT, UPDATE or DELETE foresprøgsel associeret med link_identifier .

Parameterliste

link_identifier

The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If by chance no connection is found or established, an E_WARNING level warning is generated.

Returneringsværdier

Returnerer antal rækker der var berørt ved succes, og -1 hvis sidste forespørgsel mislykkes.

Hvis sidste forespørgsel var en DELETE forespørgsel, hvor ingen WHERE klausul, var angivet vil alle rækker være blevet slettet, men denne funktion vil returnere nul, ved MySQL versioner før 4.1.2.

Når man bruger UPDATE, vil MySQL ikke opdatere kolonner hvor den nye værdi er identisk med den gamle. Det vil skabe muligheden for at mysql_affected_rows() ikke angiver det samme antal rækker, som der blev genkendt, men kun dem der var berørt af forespørgslen.

REPLACE udsagnet, sletter først registrering med samme primær nøgle, og derefter indsætter den en ny registrering. Denne funktion vil dermed returnere nummeret af slettede registreringer, og nummeret af indsatte registreringer.

Eksempler

Example#1 mysql_affected_rows() eksempel

<?php
$link 
mysql_connect('localhost''mysql_bruger''mysql_kode');
if (!
$link) {
    die(
'Kunne ikke forbinde: ' mysql_error());
}
mysql_select_db('midb');

/* detet skulle returnere det korrekte antal slettede registre */
mysql_query('DELETE FROM mintabel WHERE id < 10');
printf("Registre slettet: %d\n"mysql_affected_rows());

/* med en where klausul der aldrig er san, det burde returnere 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Registre slettet: %d\n"mysql_affected_rows());
?>

Ovenstående eksempel vil udskrive noget der ligner:

Registre slettet: 10
Registre slettet: 0

Example#2 mysql_affected_rows() eksempel der bruger transaktioner

<?php
$link 
mysql_connect('localhost''mysql_bruger''mysql_kode');
if (!
$link) {
    die(
'Kunne ikke forbinde: ' mysql_error());
}
mysql_select_db('mindb');

/* Opdater registre */
mysql_query("UPDATE mintable SET brugt=1 WHERE id < 10");
printf ("Opdaterede registre: %d\n"mysql_affected_rows());
mysql_query("COMMIT");
?>

Ovenstående eksempel vil udskrive noget der ligner:

Opdaterede registre: 10

Notes

Note: Transaktioner Hvis du bruger transaktioner, skal du kalde mysql_affected_rows() efter hver INSERT, UPDATE, eller DELETE forespørgsel, ikke efter COMMIT.

Note: SELECT udsagn For at returnere antallet af rækker, returneret af et SELECT udsagn, kan du bruge mysql_num_rows().