pg-affected-rows () only runs on the LAST SQL STATEMENT executed. If you compound several statements together then pg_affected_rows might not return what you expect.
For example:
<?php
$result = pg_query ('BEGIN; INSERT INTO foo (bar) VALUES (\'baz\'; COMMIT');
echo (pg_affected_rows ($result));
?>
will cause 0 to be printed, because the last statement executed by Postgres was COMMIT, which doesn't affect any rows.
I haven't tried this so am not certain it works, but you SHOULD be able to get the row counts you want if you split your queries up.
For example:
<?php
$result = pg_query ('BEGIN; INSERT INTO foo (bar) VALUES (\'baz\';');
echo (pg_affected_rows ($result));
pg_query ('COMMIT;');
?>
should allow you to get the number of rows affected by the previous query. I haven't tried this yet though, so don't count on it.pg_affected_rows
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
pg_affected_rows
Референца за `function.pg-affected-rows.php` со подобрена типографија и навигација.
pg_affected_rows
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_affected_rows — Враќа број на погодени записи (кортежи)
= NULL
pg_affected_rows() враќа број на кортежи (инстанци/записи/редови) погодени од INSERT,
UPDATEПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во DELETE
queries.
Серверот исто така враќа број на избрани редови.
Забелешка:
Оваа функција порано се нарекуваше pg_cmdtuples().
Параметри
result-
Еден PgSql\Result инстанца, вратена од pg_query(), pg_query_params() or pg_execute()инстанца, или ознаката за завршување на PostgreSQL командата поврзана со резултатот
Вратени вредности
Бројот на редови погодени од прашањето. Ако ниту еден кортеж не е погоден, ќе врати 0.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.1.0 |
На result параметарот очекува PgSql\Result
инстанца сега; претходно, а resource се очекуваше.
|
Примери
Пример #1 pg_affected_rows() example
<?php
$result = pg_query($conn, "INSERT INTO authors VALUES ('Orwell', 2002, 'Animal Farm')");
$cmdtuples = pg_affected_rows($result);
echo $cmdtuples . " tuples are affected.\n";
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
1 tuples are affected.
Види Исто така
- pg_query() за да го одредите резултатот од барањето.
- pg_query_params() - Поднесува команда до серверот и чека на резултатот, со можност за поминување параметри одделно од текстот на SQL командата
- pg_execute() - Испраќа барање за извршување на подготвена изјава со дадени параметри и чека на резултатот
- pg_num_rows() - Враќа број на редови во резултат
Белешки од корисници 4 белешки
Note that when you submit several SQL queries, within one BEGIN;COMMIT; like this one :
$SQLQuery = 'BEGIN;';
$SQLQuery.= 'INSERT INTO a (a,b) VALUES (1,2);';
$SQLQuery.= 'INSERT INTO b (ref_b,c) VALUES (2,5);';
$SQLQuery.= 'COMMIT;';
$HandleResults = pg_query($SQLQuery);
echo(pg_affected_rows($HandleResults));
pg_affected_rows() will return 0There is something called auto-commit, when you supply more than one query delimited by ; semicolon all-or-none is done if one fails. No need for BEGIN;COMMIT;ROLLBACK when doing one query. its logic to mee pg_affected_rows() returns affected rows and if you want to do 2 queries apart from each other.. do a BEGIN and then 1 and get pg_affected_rows() then do 2 and get pg_affected_rows() and then finally do COMMIT;