select mit join - absoluter Anfänger :-(

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

select mit join - absoluter Anfänger :-(

Postby moneypenny » 25. October 2005 20:55

Hallo liebe Leute,
als Anfänger hab ich so ein Logik-Problem. Ich hab folgendes PHP-skript (ab-)geschrieben das nur dann funktioniert wenn ich die beiden "inner Join" rauskommentiere.

Fehlermeldung:
Parse error: parse error, unexpected T_VARIABLE in /opt/lampp/htdocs/k_fa_zusammen_test.php on line ...
In der entsprechenden "line" steht: $resultat = mysql_db_query("haushalt", $SQL_Befehl);

Nehme in die beiden "inner join" raus, dann gibt es keine Fehlermeldung, allerdings logischerweise einen unsinnigen select.
Warum bekomme ich einen "Mecker" bei der Benutzung von join's?


<?php

$db = mysql_connect ("localhost", "root", "");

$SQL_Befehl = "SELECT * FROM k_fa_zusammen, konten, feste_ausgaben
inner join konten on konten.k_id=k_fa_zusammen.x_k_id
inner join feste_ausgaben on feste_ausgaben.fa_id=k_fa_zusammen.x_fa_id;"

$resultat = mysql_db_query("haushalt", $SQL_Befehl);

while ($row = mysql_fetch_array($resultat)) {
extract($row);

echo "$x_k_id $x_fa_id $k_kontonummer $fa_anbieter<br>";
}
mysql_close($db);

?>

Tabelle "konten" (enthält Kontendaten)
Tabelle "feste_ausgaben" (monatliche feste Ausgaben)
Tabelle "k_fa_zusammen" (enthält die Zuordnung der Ausgaben zu den Konten)

Hoffe Ihr könnt mir den Fehler erklären. Ansonsten brauche ich ein Buchtipp für Anfänger.

Danke
moneypenny
moneypenny
 
Posts: 22
Joined: 19. September 2005 08:45

Postby Wiedmann » 25. October 2005 22:07

Ich hab folgendes PHP-skript (ab-)geschrieben das nur dann funktioniert wenn ich die beiden "inner Join" rauskommentiere.

Das ist eher Zufall. Würdest du wirklich nur die 2 Joins rausnehmen, würde das Scripte trotzdem nicht tun.

Hoffe Ihr könnt mir den Fehler erklären. Ansonsten brauche ich ein Buchtipp für Anfänger.

Das offizielle PHP-Manual langt eigentlich:
Jede PHP-Befehlszeile muss mit einem Semikolon abgeschlossen werden.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby nattl » 26. October 2005 08:17

Oder besser gesagt:

es fehlt ein Semikolon genau

zusammen.x_fa_id;" <-- hier!
User avatar
nattl
 
Posts: 22
Joined: 26. October 2005 07:50
Location: Vienna

funktioniert leider nicht

Postby moneypenny » 26. October 2005 17:43

Sorry,
aber trotz Semikolon bekomm ich die gleiche Fehlermeldung für die gleiche Zeile (s. o.).

moneypenny
moneypenny
 
Posts: 22
Joined: 19. September 2005 08:45

Postby 1Euro » 26. October 2005 21:49

öhm das
zusammen.x_fa_id;"
ist auch falsch richtig währe zusammen.x_fa_id";
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

will auch nicht so richtig

Postby moneypenny » 27. October 2005 20:33

Hallo, danke für den Tip,

das führt aber zu der nächsten Fehlermeldung

" mysql_fetch_array(): supplied argument is not a valid MySQL result resource"

und bezieht sich auf die Zeile

while ($row = mysql_fetch_array($resultat)) {
extract($row);

Kann es sein das mir noch irgendwo ein Semikolon oder ein " fehlt. ???????

moneypenny
moneypenny
 
Posts: 22
Joined: 19. September 2005 08:45

Postby nattl » 28. October 2005 05:44

nö, nix mit semicolon, sonst würds ja dortstehen.

Die Fehlermeldung sagt, dass der Inhalt von $resultat offenbar kein gültiges resultset ist. Möglicherweise liefert die Query ja kein Ergebnis zurück.

Vorschlag: Pack die while-schleife noch in eine Abfrage, ob $resultat überhaupt einen inhalt hat...

Code: Select all
...
if ($result) {
    while ($row = mysql_fetch_array($resultat)) {
        extract($row);
        echo "$x_k_id $x_fa_id $k_kontonummer $fa_anbieter<br>";
} else {
    print ('Mist! In $result steht Schrott...'."<br />");
    print ('<pre>');
    //mal schauen, was in $result so drinnensteht....   
    var_dump ($result);
    print ('</pre>');
}
User avatar
nattl
 
Posts: 22
Joined: 26. October 2005 07:50
Location: Vienna

Postby 1Euro » 28. October 2005 08:50

Hallo,
das hier ist falsch!

Code: Select all
...
if ([color=red]$result[/color]) {
    while ($row = mysql_fetch_array([color=red]$resultat[/color])) {
        extract($row);
        echo "$x_k_id $x_fa_id $k_kontonummer $fa_anbieter<br>";
} else {
    print ('Mist! In $result steht Schrott...'."<br />");
    print ('<pre>');
    //mal schauen, was in $result so drinnensteht....   
    var_dump ($result);
    print ('</pre>');
}

Das ganze müsste so aussehen:

Code: Select all
...
if ([color=red]$resultat[/color]) {
    while ($row = mysql_fetch_array([color=red]$resultat[/color])) {
        extract($row);
        echo "$x_k_id $x_fa_id $k_kontonummer $fa_anbieter<br>";
} else {
    print ('Mist! In $result steht Schrott...'."<br />");
    print ('<pre>');
    //mal schauen, was in $result so drinnensteht....   
    var_dump ($result);
    print ('</pre>');
}


1Euro[/code]
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

Tja, in meiner Variablen

Postby moneypenny » 28. October 2005 20:31

$result steht leider "Schrott" . Das Skript gibt NULL zurück.

Also muss ich mir mal vertiefte Gedanken über die Verwendung von join's machen.

Hat jemand von euch ein idioteneinfaches Beispiel für so ein join zur Hand mit dem ich arbeiten kann? Ich bräuchte etwas was funktioniert damit ich die Syntax verstehen lerne.

Übrigens mußte ich in dem korrigierten Skript oberhalb von "else" noch eine geschweifte Klammer einfügen um ein Ergebnis zu bekommen, ansonsten hatte ich dann schon wieder die nächste Fehlermeldung.

Danke für Eure Hilfe, hier ist man wirklich gut aufgehoben.
Gruß
moneypenny
moneypenny
 
Posts: 22
Joined: 19. September 2005 08:45


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 18 guests