Warning: mysql_fetch_array(): supplied argument is not a val

Alles, was PHP betrifft, kann hier besprochen werden.

Warning: mysql_fetch_array(): supplied argument is not a val

Postby almamatar » 13. November 2007 16:16

Hallo,

habe bisher mit mysql 4.0.12 und PHP 4.3.4 gearbeitet. Wollte nun auf einer anderen Maschine mit xampp 1.6.4 meine Datenbanken weiterlaufen lassen. Leider bekomme ich folgende Fehlermeldung:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\xampp2\htdocs\test\ausgabe.php on line 71

Der Fehler liegt in der Abfrage (fett markiert):

$result2=mysql_query("SELECT * FROM ... LEFT JOIN team ON as_team_id=team_id WHERE ... ");

Warum funktioniert das LEFT JOIN nicht mehr? Kann mir jemand weiterhelfen?

Meine GLOBAL_REGISTER sind auf On geschaltet!
Im voraus vielen Dank für die Hilfe!
almamatar
 
Posts: 6
Joined: 13. November 2007 16:06
Location: Nürnberg

Postby Wiedmann » 13. November 2007 16:50

Code: Select all
$result2=mysql_query("SELECT * FROM ... LEFT JOIN team ON as_team_id=team_id WHERE ... ");

Warum funktioniert das LEFT JOIN nicht mehr?

Wie lautet denn die genaue Fehlermeldung, die dir MySQL bei diesem Query liefert?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby almamatar » 13. November 2007 20:15

Diese Meldung kommt auf jeder Seite auf der ein "LEFT JOIN" eingebaut ist:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\xampp2\htdocs\test\ausgabe.php on line 71

Danke für das Interesse!
Im voraus vielen Dank für die Hilfe!
almamatar
 
Posts: 6
Joined: 13. November 2007 16:06
Location: Nürnberg

Postby Wiedmann » 13. November 2007 20:34

Code: Select all
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Diese Meldung kommt auf jeder Seite auf der ein "LEFT JOIN" eingebaut ist:


Du sagst ja, dass das Query aus dieser Zeile fehlerhaft ist (und zu der obigen Warnung führt):
Code: Select all
$result2=mysql_query("SELECT * FROM ... LEFT JOIN team ON as_team_id=team_id WHERE ... ");

Ergo liefert dir mysql_query() ein FALSE zurück, und MySQL liefert zudem eine Fehlerbeschreibung, auf die du mit mysql_error() Zugriff hast.

UNd eben diese Fehlerbeschreibung von MySQL sagt dir wo das Problem ist.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby almamatar » 13. November 2007 20:47

Sorry, das war noch die alte Fehlermeldung.

In der Fehlermeldung stand der Spaltenname 'as_team_id'. Daraufhin habe ich das LEFT JOIN ganz gelöscht und es funktionierte. Die Spalte 'as_team_id' ist in der entsprechenden Tabelle vorhanden. Wie gesagt es funktioniert alles bis auf sämtliche LEFT JOIN in allen Skripten. Überall wo ich das LEFT JOIN herausnehme wird die Seite richtig aufgebaut.

Leider kann ich erst morgen wieder an dem Rechner sein, der den Fehler verursacht, vielleicht ist es besser, morgen an dieser Stelle weiter zu machen. Ich werde dann den Originalfehler hier veröffentlichen.

Weiterhin vielen Dank für das Interesse
Im voraus vielen Dank für die Hilfe!
almamatar
 
Posts: 6
Joined: 13. November 2007 16:06
Location: Nürnberg

Postby Wiedmann » 13. November 2007 20:54

Ich werde dann den Originalfehler hier veröffentlichen.

Gute Idee ;-)

Das komplette SELECT Statement wäre auch hilfreich.

BTW kann ich mir schon denken warauf es hinaus läuft:
habe bisher mit mysql 4.0.12

Auf die Korrekturen/Änderungen im JOIN-Verhalten seit 5.0.12. (In dem orginalen SELECT kommen ja bestimmt ein paar Kommas vor?)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby almamatar » 13. November 2007 20:58

Ja, richtig. Den Stern habe ich für das Forum verwendet. Ich habe nur die Datei von da nach da kopiert. Habe nichts umgeschrieben. Wie sieht denn so ein LEFT JOIN in der Version 5 aus? Gibt es dazu deutsche Quellen?
Im voraus vielen Dank für die Hilfe!
almamatar
 
Posts: 6
Joined: 13. November 2007 16:06
Location: Nürnberg

Postby Wiedmann » 13. November 2007 21:23

Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby almamatar » 14. November 2007 10:29

Hallo, da bin ich wieder!

Die Fehlermeldung sieht so aus:

Fehler: Unknown column 'as_team_id' in 'on clause'

Die Abfrage sieht so aus:

$result1=mysql_query("SELECT dbprojektbau.P_Nr, Namenskuerzel,arbeitsstelle.P_Nr,
NL_PZ_Nr, Niederlassung, NL_Kuerzel, as_nl_id, as_ag_id,
AG_Nr, Arbeitsgebiet_Abkuerzung, nl_id, ag_id,
Niederlassung, OE, zusatz, Arbeitsgebiet, sofu_ma.Sofu_id, sofu_ma.P_Nr,
dbpb_image_src, Nachname, MA_beschaeftigt_ab_seit,
MA_beschaeftigt_bis, as_team_id, team_id

FROM arbeitsstelle, dbprojektbau, nl_pz, arbeitsgebiete, sofu_ma

LEFT JOIN team ON as_team_id=team_id

WHERE sofu_ma.Sofu_id=$Sofuid
AND dbprojektbau.P_Nr=sofu_ma.P_Nr
AND arbeitsstelle.P_Nr=dbprojektbau.P_Nr
AND nl_id=as_nl_id
AND ag_id=as_ag_id
AND MA_beschaeftigt_ab_seit<=curdate()
AND MA_beschaeftigt_bis>=curdate()
ORDER BY Nachname");

Die Spalte as_team_id ist in der Tabelle arbeitsstelle vorhanden. Liege ich richtig, dass die Tabelle Arbeitsstelle am Ende vom FROM-Statement stehen muss?

Vielen Dank für die Hilfe und den Link zum mysql-Forum!
Im voraus vielen Dank für die Hilfe!
almamatar
 
Posts: 6
Joined: 13. November 2007 16:06
Location: Nürnberg

Postby almamatar » 14. November 2007 10:50

Ok, ich habs!

Also: Wenn ich einen LEFT JOIN habe muss die Tabelle auf die sich Abfrage bezieht am Ende stehen.
Wenn ich 2 oder noch mehr LEFT JOINs habe müssen die Tabelle am Ende und in Klammern stehen, z.B. so ...

$result2=mysql_query("SELECT Nachname, Vorname, Reihenfolge_Nr, Namenskuerzel, PersFunktion,
DBKom_Telefon, DBKom_Fax, Handy, Etage, Zimmer, Telekom_Telefon, Telekom_Fax,
arbeitsstelle.P_Nr, as_ag_id, arbeitsgebiete.AG_Nr, Arbeitsgebiet_Abkuerzung,
NL_Kuerzel, NL_PZ_Nr, as_team_id, team.Team_Nr, Team_Abkuerzung, team_id
MA_beschaeftigt_ab_seit, MA_beschaeftigt_bis, ag_id, as_nl_id, nl_id,
Vorwahl_Telekom, dbprojektbau.Vorwahl_Telekom_Nr, vorwahlen_telekom.Vorwahl_Telekom_Nr,
vorwahlen_dbkom.Vorwahl_Nr, vorwahlen_dbkom.Vorwahl, dbprojektbau.Vorwahl_Nr,
Arbeitstelle_NR, Strasse, dbprojektbau.P_Nr
FROM arbeitsgebiete, nl_pz, vorwahlen_telekom, (dbprojektbau, arbeitsstelle)
LEFT JOIN team ON as_team_id=team_id
LEFT JOIN vorwahlen_dbkom ON dbprojektbau.Vorwahl_Nr=vorwahlen_dbkom.Vorwahl_Nr
WHERE as_ag_id=$id
AND vorwahlen_telekom.Vorwahl_Telekom_Nr=$id2
AND vorwahlen_telekom.Vorwahl_Telekom_Nr=dbprojektbau.Vorwahl_Telekom_Nr
AND dbprojektbau.P_Nr=arbeitsstelle.P_Nr
AND ag_id=$id
AND nl_id=as_nl_id
AND MA_beschaeftigt_ab_seit<=curdate()
AND MA_beschaeftigt_bis>=curdate()
order by Reihenfolge_Nr");

Vielen Dank für die Hilfe!!!!!!!!!!!!!!!!!!!!!!!!!
Im voraus vielen Dank für die Hilfe!
almamatar
 
Posts: 6
Joined: 13. November 2007 16:06
Location: Nürnberg

Postby piratos » 14. November 2007 12:36

Es ist immer eine gute Sache Abfragen über PHPMyAdmin auszuprobieren, da bekommt man direkt die Information

a. ob es läuft

b. wo es hakt.

Das erspart manche Arbeit.
piratos
 
Posts: 45
Joined: 28. October 2004 10:10


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests