Re: numRows()
| From: | James L. Pine | Date: | Fri, 08 Dec 2000 01:11:43 +0000 |
| Subject: | Re: numRows() | ||
| References: | 1 | Groups: | php.pear |
| Request: | Send a blank email to php-pear+get-607@lists.php.net to get a copy of this message | ||
the oci8, oracle, and ibase modules don't have functions for numrows. the
odbc module may or may not return the number of rows in the result set,
depending on the type of database to which it is connecting.
I'd go against adding numrows to the db layer. simply returning
not_implemented isn't that good of a thing, as (when it's there) it's a
very very commonly used function... this is a sure trap for lack of
portability, which I'd like to view as a main goal for any db abstraction
layer. yes, you can have a nice function matrix that tells you what
functions not to use if you'd like to be able to switch to and from
databases later on, but that's kind of a cop out. and yes, I know that
sql isn't ever as portable as it ought to be, with nonstandard functions
and rogues like mysql that don't even have subqueries... but it's not
practical to have a db layer filter out non-generic sql, while it is (at
least to me) practical to discourage non-generic functions.
there will probably never be a wonderfully simple and efficient way of
doing numrows in the databases that don't support it through native php
functions. cycling through and counting rows in the result set is not
exactly optimal, and doing something like 'select count, cursor($query)
from (select count(*) count from ($query))' and sorting things out after
every select query is a bit more painful that it ought to be.
if it's decided by those more important than me that numrows should go in,
I'd probably angle for some config option to pick which non-efficient
numrows emulation method to use.
of course, if I'm totally off and missing some essential ingredient to
understanding, please clue me in.
--jlp