[PHP/MYSQL]Probleem aanroepen resultaten join/zelfde namen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JTW
  • Registratie: September 2001
  • Laatst online: 14-05 21:23
Ik heb een paar MySQL tabellen, welteverstaan producten en voorraad.

In producten staan de gegevens van producten zoals de naam en de omschrijving ervan. Het id veld is uniek voor elk product.
In voorraad is er ook een primair veld, eveneens id genaamd. Er is een veld prodid dat verwijst naar het id veld in de product tabel.

Met de query
"SELECT * FROM product p, voorraad v WHERE (p.id = v.prodid)"
wil ik dus alle gegevens van deze tabellen kunnen aanroepen, dus ook de twee verschillende id velden. (Ik wil echter wel de * gebruiken omdat de database in de toekomst nogal eens gewijzigd zal worden.)

Mijn vraag is nu de volgende, hoe kan ik de beide "id" velden uitlezen in PHP?
Ik kan in de fetch functie die ik gebruik moeilijk een punt plaatsen, omdat PHP dit leest als koppelteken voor strings.(zie de onderste lijn in de code)

PHP
code:
1
2
3
4
5
6
function resultaat(){
  return mysql_fetch_object($this->result);
}
$db  <<voer query uit>>;
$record = $db->resultaat();
echo $record->p.id


Ik kan dit wel oplossen door de * in de query te vervangen door bijvoorbeeld
"p.id pid, v.id vid"
maar dit is wenselijk noch noodzakelijk omdat het programma overzichtelijk en klein moet blijven en dynamisch moet zijn met tabelwijzigingen én de database toch maar vrij klein is.

Ik heb google en GoT afgezocht op antwoorden op mijn vraag, maar ik kon niets nuttigs vinden omdat de meeste mensen geen * gebruiken in hun query.

Alvast bedankt voor jullie antwoorden.

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Ikzelf gebruik nooit *. Errors vang je dan ook mooi af (loggen en de user een mooie error message tonen). Je kan toch niet verwachten dat als je je tabel structuur aanpast je applicatie nog volop werkt? Als je de naam van je id veld aanpast zal je ook niet meer echo $res->id kunnen doen.

Ik vind het trouwens uberhaubt een slecht idee om tabelstructuur 'dynamisch' te maken. Ik denk dat je dan beter gaat kijken om binnen je tables een structuur op te stellen als

code:
1
2
3
id | key   | value
1  | key1 | foo
1  | key2 | bar

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • JTW
  • Registratie: September 2001
  • Laatst online: 14-05 21:23
dingstje schreef op zaterdag 09 juli 2005 @ 10:48:
Ikzelf gebruik nooit *. Errors vang je dan ook mooi af (loggen en de user een mooie error message tonen). Je kan toch niet verwachten dat als je je tabel structuur aanpast je applicatie nog volop werkt? Als je de naam van je id veld aanpast zal je ook niet meer echo $res->id kunnen doen.

Ik vind het trouwens uberhaubt een slecht idee om tabelstructuur 'dynamisch' te maken. Ik denk dat je dan beter gaat kijken om binnen je tables een structuur op te stellen als

code:
1
2
3
id | key   | value
1  | key1 | foo
1  | key2 | bar
Ok, opzich heb je gelijk, maar voor mij is errorlogging totaal niet erg omdat dit gedeelte van de database alleen voor intern gebruik is en alle werknemers (ik en nog iemand :p) weten hoe het php bestand in elkaar zit en wat er fout kan zijn. De term dynamisch was ietwat misplaatst, dit kun je beter interpreteren als "er kunnen nog velden aan de tabel toegevoegd worden". Omdat de query op een aantal plaatsen gebruikt wordt(maar op alle plaatsen net iets anders) is het wel handig als je niet steeds het hele PHP bestand overal aan moet passen bij een kleine wijziging.
In ieder geval zou ik willen weten hoe de resultaten aangeroepen kunnen worden.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

mysql_fetch_row gebruiken en dan met getallen werken?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.