fetch_assoc() - Frage

fetch_assoc() - Frage

am 22.06.2006 17:58:31 von Markus Glubka

Hallo Ihr,

ich nutze normalerweise immer den Befehl fetch_assoc(), um auf die=20
Ergebnisse einer Datenbank-Abfrage (sei es MySQL oder Oracle) zuzugreifen=


Nun habe ich folgendes Stück Code:


--------

$selectKundendatenSQL =3D "SELECT * FROM Kunde k, kontakt c WHERE=20
c.kontaktid=3Dk.kontaktid AND c.email=3D'".$_POST['mailaddy']."'";
=09
$stmt =3D db_query($selectKundendatenSQL);
=09
$dsatz =3D oci_fetch_assoc($stmt);
=09
echo "PW aus DB: " . $dsatz['PASSWORT'];
echo "PW aus Form: " . $_POST['pw'];

---------
=09
Nun habe ich das Problem, dass ich wie man sieht auf einzelne Felder (in =

diesem Fall "PASSWORT") des Ergebnisses zugreifen will. Nur steht in=20
diesen Feldern leider nichts drin, es ist immer leer...

Ich versteh allerdings nicht warum?! Hängt es damit zusammen, dass 2=20
Tabellen im SQL-Befehl abgefragt werden? Also die Spalte "Passwort" ist=20
in der Tabelle "Kunde"... Habe auch schon versucht mit Kunde.PASSWORT=20
darauf zuzugreifen, allerdings war das auch nicht von Erfolg gekrönt...=


Womit hängt das Problem zusammen? Sonst funktioniert das alles=20
einwandfrei mit dem fetch_assoc() :(

Vielen Dank für die Hilfe...

MfG

Re: fetch_assoc() - Frage

am 22.06.2006 18:08:14 von Christian Schmelzer

Markus Glubka wrote:
> Hallo Ihr,
>
> ich nutze normalerweise immer den Befehl fetch_assoc(), um auf die
> Ergebnisse einer Datenbank-Abfrage (sei es MySQL oder Oracle)
> zuzugreifen.
>
> Nun habe ich folgendes Stück Code:
>
>
> --------
>
> $selectKundendatenSQL = "SELECT * FROM Kunde k, kontakt c WHERE
> c.kontaktid=k.kontaktid AND c.email='".$_POST['mailaddy']."'";
>
> $stmt = db_query($selectKundendatenSQL);
>
> $dsatz = oci_fetch_assoc($stmt);
>
> echo "PW aus DB: " . $dsatz['PASSWORT'];
> echo "PW aus Form: " . $_POST['pw'];
>
> ---------
>
> Nun habe ich das Problem, dass ich wie man sieht auf einzelne Felder
> (in diesem Fall "PASSWORT") des Ergebnisses zugreifen will. Nur steht
> in diesen Feldern leider nichts drin, es ist immer leer...
>
> Ich versteh allerdings nicht warum?! Hängt es damit zusammen, dass 2
> Tabellen im SQL-Befehl abgefragt werden? Also die Spalte "Passwort"
> ist in der Tabelle "Kunde"... Habe auch schon versucht mit
> Kunde.PASSWORT darauf zuzugreifen, allerdings war das auch nicht von
> Erfolg gekrönt...
>
> Womit hängt das Problem zusammen? Sonst funktioniert das alles
> einwandfrei mit dem fetch_assoc() :(
>
> Vielen Dank für die Hilfe...
>


Hallo,
keine Ahnung was dein Problem genau ist, hatte auch nicht so eine Lust alles
zu lesen. Aber als erstes würde ich mal nachsehen was denn in $dsatz
überhaupt drin steht (var_dump ($dsatz)).
Danach kannst du immer noch weiter suchen. BTW: Fehlerbehandlung ist nicht
so dein Ding?

Christian

Re: fetch_assoc() - Frage

am 22.06.2006 18:15:22 von Frank Schenk

Markus Glubka wrote:
> Nun habe ich folgendes Stück Code:
>
> $selectKundendatenSQL = "SELECT * FROM Kunde k, kontakt c WHERE
> c.kontaktid=k.kontaktid AND c.email='".$_POST['mailaddy']."'";

echo $selectKundendatenSQL;

Ausgegebenen Query per Client direkt an die Datenbank absetzen.

Wenn sicher gestellt ist, daß das SQL einwandfrei ist und auch Daten
liefert und keine PHP Errors ausgelöst werden schau nochmal vorbei :)

gruß, Frank

Re: fetch_assoc() - Frage

am 22.06.2006 18:31:47 von Markus Glubka

Frank Schenk schrieb:
> Markus Glubka wrote:
>> Nun habe ich folgendes Stück Code:
>>
>> $selectKundendatenSQL =3D "SELECT * FROM Kunde k, kontakt c WHERE=20
>> c.kontaktid=3Dk.kontaktid AND c.email=3D'".$_POST['mailaddy']."'";
>=20
> echo $selectKundendatenSQL;
>=20
> Ausgegebenen Query per Client direkt an die Datenbank absetzen.
>=20
> Wenn sicher gestellt ist, daß das SQL einwandfrei ist und auch Daten =

> liefert und keine PHP Errors ausgelöst werden schau nochmal vorbei :)=

>=20
> gruß, Frank

Also das generierte SQL-Statement habe ich mir schon anzeigen lassen und =

die Datenbank schluckt das ohne Probleme...

Also daran liegt es nicht...

in $dsatz steht laut var_dump ($dsatz) folgendes drin: bool(false)

MfG

Re: fetch_assoc() - Frage

am 22.06.2006 18:37:23 von Frank Schenk

Markus Glubka wrote:
> Also das generierte SQL-Statement habe ich mir schon anzeigen lassen und
> die Datenbank schluckt das ohne Probleme...
>
> Also daran liegt es nicht...
>
> in $dsatz steht laut var_dump ($dsatz) folgendes drin: bool(false)

Der Query schlug fehl.

Steht die Verbindung zur Datenbank? Den relevanten Code sieht man leider
nicht in deinem Code. Was ist db_query? Was steht in $stmt?

gruß, Frank

Re: fetch_assoc() - Frage

am 22.06.2006 18:45:28 von Markus Glubka

Frank Schenk schrieb:
> Markus Glubka wrote:
>> Also das generierte SQL-Statement habe ich mir schon anzeigen lassen=20
>> und die Datenbank schluckt das ohne Probleme...
>>
>> Also daran liegt es nicht...
>>
>> in $dsatz steht laut var_dump ($dsatz) folgendes drin: bool(false)
>=20
> Der Query schlug fehl.
>=20
> Steht die Verbindung zur Datenbank? Den relevanten Code sieht man leide=
r=20
> nicht in deinem Code. Was ist db_query? Was steht in $stmt?
>=20
> gruß, Frank

Also in $stmt steht: resource(6) of type (oci8 statement)

Also die DB-Connection ist aber da, weil sonst würden schon vorher=20
Fehlermeldungen kommen wegen fehlgeschlagenem Connect...

db_query() ist quasi nur ne Mini-Abstraktionsschicht, im Hintergrund=20
wird ganz normal auf oci_execute() zurückgegriffen, hier die Funktion:

function db_query($sql)
{
$stmt =3D oci_parse($GLOBALS['con'], $sql);
oci_execute($stmt);
//echo $sql . "
";
return $stmt;
}


Das SQL-Statement ist soweit laut Toad korrekt, es wird bei ner=20
korrekten Mail-Adresse ein Datensatz angezeigt...

SELECT * FROM Kunde k, kontakt c WHERE c.kontaktid=3Dk.kontaktid AND=20
c.email=3D'mail@mail.de'

MfG