Ask a Question related to PHP Development, Design and Development.
-
Alex #1
[PHP-DEV] Sybase "identical field names" feature on sybase_fetch_array()
------=_NextPart_000_0162_01C3ADC3.3AE54DC0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Hello, I've been mailing some lists with this issue without any luck. I =
hope this is the right place to post this.
I was recently shocked when I discovered the implementation of Sybase =
"identical fields".
The PHP manual for sybase_fetch_array() reads:
<snip>
Note: When selecting fields with identical names (for instance, in a =
join), the associative indices will have a sequential number prepended. =
See the example for details.
</snip>
I would like to say that I am against implementing these sort of =
repetitive field returns. If a programmer wants multiple (identically =
named) fields
returned, they can always modify their SQL statement to reflect unique =
field names:
select t1.id as id1, t2.id as id2 from t1,t2
PHP should NOT be mangling field names returned from the database =
driver, it should simply return the name-value of the LAST field of any =
given
name.
However, if this is to be kept in the code, there are a few important =
considerations that should be taken into account regarding the =
implementation:
1st. Upgading PHP. There are loads of cases where you can find in a =
database different tables with some identical field names. I know this =
is poor database design, but sometimes you find that you have to work =
with a design where this occurs. With this new feature on =
sybase_fetch_array() all the code where one just assumed that the =
returned value for field X was from the last table selected, MUST BE =
RE-WRITTEN.
2nd. IMHO, the implementation of this feature is very poor. When you =
have a JOIN over two tables and they have more that one field with the =
same name:
table A:
id
date
user
afield
table B:
id
date
user
bfield
the resulting join will result in
id
date
user
id1
date2
user3
afield
bfield
A single numeric index is incremented for all repetitive fields, making =
it impossible to make it dynamic. (if you made a select using different =
fields
you will get different field names!!!) I suggest correcting this =
implementation to return field names as follows:
id
date
user
id1
date1
user1
afield
bfield
One counter for each repeated field instead of one unique counter for =
ALL fields.
3rd. Last but not least... This is a feature only implemented in Sybase =
library functions, so when creating cross-db applications, it is much
more difficult to implement generic code.
I would appreciate hearing from the PHP Team about this.
Thanks in advance,
Alex
----------------------------
Alex Bazan
abazan at filnet dot es
------=_NextPart_000_0162_01C3ADC3.3AE54DC0--
Alex Guest
-
"select into outfile" command with field names as the first lineof the file
Hi all ;) The question is in the subject. I had a look in the export_option but nothing appeared. I don't want to use a sophisticated tool to do... -
#26287 [NEW]: sybase_fetch_array() "identical field names" feature
From: abazan at filnet dot es Operating system: -- PHP version: 4.3.2 PHP Bug Type: Feature/Change Request Bug description: ... -
Compare 2 fields & delete everything in "field 2" that occurs in "field 1"
Is it possible to compare 2 fields and delete everything in "field 2" that also occurs in "field 1" ? FIELD1 800-555-1212 for... -
dr("field").toString returns "400.0000" instead of "400"
I have just installed VS.NET 2003 on my computer. I have a project that I have been developing on VS.NET 2002. I haven't upgraded this project to... -
How to make the "search text" feature work with non "txt" file
On Fri, 27 Jun 2003 07:19:23 -0700, "Juergen" <anhorn@bktel.com> wrote: See MVP Doug Knox' comments and fix here:...



Reply With Quote

