Re: affected_rows always > 0
| From: | Marko Perich | Date: | Wed, 18 Oct 2000 19:38:43 +0000 |
| Subject: | Re: affected_rows always > 0 | ||
| References: | 1 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-3747@lists.php.net to get a copy of this message | ||
----- Original Message -----
> Salute !
>
> The Manual say:
>
> ifx_num_rows
> ifx_num_rows -- Count the rows already fetched a query
> Description
> int ifx_num_rows(int result_id);
> Gives the number of rows fetched so far for a query with result_id after a
> ifx_query() or ifx_do() query.
>
> ^^^^^^^^^^^^^^^^^^^^^^^^
> and:
>
> int ifx_affected_rows(int result_id);
> result_id is a valid result id returned by ifx_query() or ifx_prepare().
> Returns the number of rows affected by a query associated with result_id.
> For inserts, updates and deletes the number is the real number
(sqlerrd[2])
> of affected rows. For selects it is an estimate (sqlerrd[0]). Don't rely
on
> it. The database server can never return the actual number of rows that
> will be returned by a SELECT because it has not even begun fetching them
at
> this stage (just after the "PREPARE" when the optimizer has determined the
> query plan).
> Useful after ifx_prepare() to limit queries to reasonable result sets.
> See also: ifx_num_rows()
> Example 1. Informix affected rows
> 1
> 2 $rid = ifx_prepare ("select * from emp
> 3 where name like " . $name, $connid);
> 4 if (! $rid) {
> 5 ... error ...
> 6 }
> 7 $rowcount = ifx_affected_rows ($rid);
> 8 if ($rowcount > 1000) {
> 9 printf ("Too many rows in result set (%d)\n<br>", $rowcount);
> 10 die ("Please restrict your query<br>\n");
> 11 }
> 12
>
> Why not ifx_num_rows(int result_id) or without ifx_do($rs) ?
Maybe. I'll try it later.
This piece of code do the job:
$rs = ifx_prepare( $consulta, $connid);
ifx_do($rs);
if ( ! is_array($row)) {
---- error ----
} else {
---- Process rows ----
}
Thank you very much.