Keine Ergebnismenge bei mysql_query - wie möglich?

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Gesperrt
Benutzeravatar
Pauli
Newbie
Newbie
Beiträge: 10
Registriert: 16. Sep 2004, 08:56

Keine Ergebnismenge bei mysql_query - wie möglich?

Beitrag von Pauli » 21. Dez 2004, 22:18

Hallo lieber Leser,

habe frisch Suse 9.2 installiert mit PHP und MYSQL.
- PHP läuft prima.
- MYSQL läuft auch (der Server).
- Connect zur MYSQL-DB kommt zustande und "stribt" nicht.
- Die SQL, die auf anderen Servern problemlos läuft (am Screen ausgegeben enthält sie einen sauberen Query), gibt auch hier keine Fehlermeldung, aber ich bekomme keine Ergebnismenge - es ist zum Verzweifeln...

$ergebnismenge=mysql_query($sql);

$ergebnismenge ist hier "empty",
$row = mysql_fetch_array($ergebnismenge) geht also nicht mehr.

Die GLEICHE SELECT-Abfrage in der Shell eingegeben, ergibt die gewünschte Ausgabe!
Was kann das wohl sein?? - Es ist zum Haare raufen...

Wer weiss hier Rat?

Beste Grüße und schöne Weihnachtstage!

Pauli

Werbung:
LinuxOr
Newbie
Newbie
Beiträge: 35
Registriert: 9. Feb 2004, 15:45
Kontaktdaten:

Beitrag von LinuxOr » 22. Dez 2004, 01:25

ich kenn zwar das problem nicht aber ich denke mal die variablen werden nicht weiter geleitet und um das hin zu bekommen solltest du in php.ini nach "global_variable..." oder so suchen und auf ON stellen.
Linux is for networking
Mac is for working
Windows is for Solitair

Benutzeravatar
roemi
Advanced Hacker
Advanced Hacker
Beiträge: 822
Registriert: 1. Apr 2004, 19:01
Wohnort: Hanau
Kontaktdaten:

Beitrag von roemi » 22. Dez 2004, 08:47

hi,

meinst du mit
Die SQL, die auf anderen Servern problemlos läuft
das du bereits einen webserver am laufen hast und das dort der gesamte sql-krempel problemlos funzt?

oder meinst das deine sql-abfrage in irgendeinem frontend, auf einem anderen server, funzt?

römi

Benutzeravatar
Pauli
Newbie
Newbie
Beiträge: 10
Registriert: 16. Sep 2004, 08:56

-> zu: Läuft auf anderen Servern

Beitrag von Pauli » 22. Dez 2004, 09:45

Hallo,

danke für die Antwort.

Wenn ich schreibe, "läuft auf anderen Servern", so meine ich damit, dass ich einen lokalen WINDOWS-Testserver habe, auf dem das Ganze läuft.
Im Netz (WWW) - im Live-Betrieb - läuft auch alles.
Jetzt bin ich dabei, den Testserver auf Linux umzustellen, daher die ganze Aktion.

Bei der Konfiguration von PHP und MYSQL habe ich alle Parameter von der Installations-Grundeinstellung beibehalten, bis auf:

register_globals=On (=neue Einstellung)

Wie kann das nur möglich sein, dass die Abfrage keine Fehlermeldung bringt, aber die Ergebnismenge nicht gefüllt wird??

LG
Pauli

Benutzeravatar
Okami
Member
Member
Beiträge: 78
Registriert: 28. Mai 2004, 12:58
Wohnort: BASF City

Re: -> zu: Läuft auf anderen Servern

Beitrag von Okami » 22. Dez 2004, 09:54

Pauli hat geschrieben:Wie kann das nur möglich sein, dass die Abfrage keine Fehlermeldung bringt, aber die Ergebnismenge nicht gefüllt wird??
Dieser Sachverhalt läßt sich erklären, wenn die Abfrage zwar ausgeführt wird, aber ein leeres Array zurückgibt --> keine Fehlermeldung, aber auch keine Ergebnismenge.
PC: AMD Athlon64 3700+, 1024 MB DDR-RAM PC-400, SuSE 10.0
Notebook: Acer Travelmate 800, Centrino 1300 MHz, 512 MB DDR, SuSE 9.3 Pro

Benutzeravatar
roemi
Advanced Hacker
Advanced Hacker
Beiträge: 822
Registriert: 1. Apr 2004, 19:01
Wohnort: Hanau
Kontaktdaten:

Beitrag von roemi » 22. Dez 2004, 10:08

hast du dir mal den inhalt deiner variablen ausgeben lassen?

römi

Benutzeravatar
Pauli
Newbie
Newbie
Beiträge: 10
Registriert: 16. Sep 2004, 08:56

Beitrag von Pauli » 22. Dez 2004, 12:40

Zu: Okami
Ja, das habe ich auch gedacht, dass die Abfrage möglicherweise von Haus aus kein Ergebnis bringt.
Spätestens, nachdem ich die am Screen geprintete $sql als Text kopiert und in die Shell-Mysql-Abfrage eingefügt habe - und diese auch noch das erwartete Ergebnis in der Shell brachte - habe ich wirklich nicht mehr weiter gewußt.

Zu: Roemi:
Meinst Du den Vardump? Oder die $sql? Viele Variablen habe ich bei der Abfrage ja nicht.
Der Connect zur DB geht (wenn ich den rausnehme, kommt auch die erwartete Fehlermeldung)
Und die Query ist auch sauber (baue ich einen Syntax-Fehler ein, bekomme ich die erwartete Fehlermeldung)
Die in jedem Fall (soll-)datenbringende Query (z.B.: SELECT * FROM tabelle) gibt schon kein Ergebnis, obwohl sich Daten in der Tabelle befinden.

Kann das an einer fehlerhafte Einstellung in PHP oder MYSQL sein?
Habe aber zu so einer möglichen Einstellung noch garnichts gelesen/gehöert...

Watt nun - wie der Elektriker zu sagen pflegt???

LG
Pauli

Benutzeravatar
roemi
Advanced Hacker
Advanced Hacker
Beiträge: 822
Registriert: 1. Apr 2004, 19:01
Wohnort: Hanau
Kontaktdaten:

Beitrag von roemi » 22. Dez 2004, 13:03

hi,

nee ich meinte schon die sql$.
da is man mit seinem latein am ende :?

kannst du mal einen völlig variablenfreien connect und eine
hardcodierte abfrage starten.
nur zum testen (also nicht auf fehler testen).

römi

Benutzeravatar
Pauli
Newbie
Newbie
Beiträge: 10
Registriert: 16. Sep 2004, 08:56

Beitrag von Pauli » 22. Dez 2004, 21:06

HAAA!

Jetzt gibts eine Fehlermeldung van mysql_error():
Access denied for user: '@localhost'

Da ich bei meinem Windowsserver wohl eine andere Grundeinstellung hatte, bin ich nie auf so ein Probelm gestossen.

Aber jetzt habe ich als LINUX-Newbie ein anderes Problem: Wie stelle ich hier den Standarduser ein??

Darf ich noch einmal um Rat bitten?

mfg
Pauli

Benutzeravatar
roemi
Advanced Hacker
Advanced Hacker
Beiträge: 822
Registriert: 1. Apr 2004, 19:01
Wohnort: Hanau
Kontaktdaten:

Beitrag von roemi » 23. Dez 2004, 08:47

hi,

ich hoffe es wird schnell einer widersprechen wenn ich nun blödsinn erzähle.

aber ....

diese meldung sagt aus, glaube ich, das du nicht genügend recht auf deine verzeichnisse und dateine hast.
ich glaube du muss alles auf 775 hochhieven.

dann sollte es klappen.

mit deinem user innerhalb von mysql oder php hat das nichts zu tun.


römi

das ist aber eine aussage die ohne meinen anwalt keine gültigkeit hat :wink:

Benutzeravatar
nobbiew
Hacker
Hacker
Beiträge: 497
Registriert: 1. Mär 2004, 23:26

Beitrag von nobbiew » 23. Dez 2004, 08:51

Nein die Meldung besagt, dass du keinen DB-User angegeben hast. Zeig uns mal deine connect-Anweisung

Benutzeravatar
Pauli
Newbie
Newbie
Beiträge: 10
Registriert: 16. Sep 2004, 08:56

Beitrag von Pauli » 23. Dez 2004, 10:03

@nobbiew

ja, ich gebe keinen Benutzer und kein Passwort an.
Auf meinem lokalen Windows Testserver war ich das so gewohnt, das lief auch immer so. Und wenn ich versucht habe, da einen User einzutragen, ging nichts mehr.

Was muss ich denn (bei Linux) tun, um einen DB-User anzulegen?
Oder ist einer angelegt (der root) und welches Passwort hat dieser? (Bestimmt nicht das Login-Passwort??)
Dann kann ich den Benutzer und das Passwort im Script an die DB übergeben (das wäre auch der korrekte Weg, denke ich).

:?:

Grüße!
Pauli

Benutzeravatar
nobbiew
Hacker
Hacker
Beiträge: 497
Registriert: 1. Mär 2004, 23:26

Beitrag von nobbiew » 23. Dez 2004, 13:38

Schau mal in der Mysql in die Datenbank mysql und da in die Tabelle users. Dort sind alle berechtigten User mit internen Rechten und von welchem rechner (hier localhost) angegeben. Näheres dazu findest du in der Online-Doku von mysql /usr/share/doc/packages/mysql/html/index.html

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste