# Sybase "identical field names" feature on sybase_fetch_array()

- Thread: https://externals.io/message/5517
- Original archive: https://news-web.php.net/php.internals/5517
- Started by Alex on 2003-11-18T10:00:51+00:00
- Messages: 1
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #5517 — Alex — 2003-11-18T10:00:51+00:00

URL: https://externals.io/message/5517#5517

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
