Hosteurope hat auf Mysql 5 gewechselt

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

Hosteurope hat auf Mysql 5 gewechselt

Postby yellojocker » 20. July 2007 14:40

Hallo Leute,

mein hostanbieter hat auf Mysql 5 gewechselt und seitdem funktioniert meine Datenbank nicht mehr.
Es kommt folgende Fehlermeldung
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /is/htdocs/ppppp/www.oooooo.de/ddddddd/eee/rrrrr.php on line 123

In dieser Zeile steht
Code: Select all
for ($i=0; $i<mysql_num_rows($res); $i++){ ?>

bzw. die kompl php Zeile
<?php
$db = mysql_connect("iiiii", "ooooo", "zzzzzz");
                 $res = mysql_db_query("elektroling_de", "select firmenname, Land from elektroling_de.ant1
group by zif order by zif limit $start,15");
for ($i=0; $i<mysql_num_rows($res); $i++){ ?>


Meine Frage was hat sich unter Mysql5 verändert und was muß geändert werden, daß meine Datenbankabfrage im Netz wieder funktioniert.

Bin für jeden Lösungsvorschlag dankbar, da ich nicht weiter weiß,
wie gesagt die Abfrage hat bis zum Tag der Umstellung immer funktioniert

Gruß Yellojocker

Edit by DJ DHG
Bitte die Code-Tags benutzen!
yellojocker
 
Posts: 30
Joined: 27. January 2005 11:35

Postby Hanspeter Thöni » 20. July 2007 15:22

Nun die Fehlermeldung kommt daher weil $res keine gültige Resource ist. Das bedeutet dass deine Query fehlgeschlagen ist.

Die Frage ist nun, warum geht die Query nicht.
Mach bitte mal folgendes:
Code: Select all
<?php
$db = mysql_connect("iiiii", "ooooo", "zzzzzz");
$res = mysql_db_query("elektroling_de", "select firmenname, Land from elektroling_de.ant1
group by zif order by zif limit $start,15");

echo mysql_error($db);


Dann erfährst du von der Datenbank was an der Query fehlgeschlagen ist.

Jetzt begebe ich mich auf dünnes Eis und in's Reich der Vermutungen:

Könnte es sein, dass auch PHP erneuert wurde und Register_Globals ausgeschaltet wurde?
Ich frage mich nämlich woher kommt die Variable $start?
Sollte diese aus GET oder POST kommen wäre diese leer bei ausgeschaltetem Register_Globals und würde daher zu einem Syntaxfehler in der Query führen.

Falls $start wirklich eine GET/POST-Variable ist bitte folgendes beachten:
1. Ansprechen der Variable mittels $_GET['start'] bzw. $_POST...
2. Bitte nie eine ungeprüfte GET/POST Variable direkt in den SQL-String reinbauen, das öffnet Tür und Tor für Hacker-Angriffe (Stichwort SQL-Injection).
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby yellojocker » 20. July 2007 15:39

habe es probiert die fehlermeldung bleibt leider unverändert bestehen
der Befehl $start 15 hatte voher auch funktioniert, es wurden immer nur
15 Werte aus der Datenbank angezeigt.

Gruß Yellojocker
yellojocker
 
Posts: 30
Joined: 27. January 2005 11:35

Postby Hanspeter Thöni » 20. July 2007 15:45

Also nochmals:

1. mach bitte das mysql_error rein. Ich bin sicher, die Query ist fehlgeschlagen. Ohne die Fehlermeldung von mysql es fast unmöglich den
Fehler zu finden.

2. was $start betrifft: Ich hatte gefragt ob diese per GET/POST übergeben wird und allenfalls register_globals abgeschaltet wurde. Das es vorher funktioniert hatte, ist mich schon klar.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby yellojocker » 20. July 2007 15:53

ok habe nun folgende Fehlermeldung unter mysql bekommen.
echo mysql_($db),

gruß Yellojocker
yellojocker
 
Posts: 30
Joined: 27. January 2005 11:35

Postby Hanspeter Thöni » 20. July 2007 16:01

Hoppla, hast du das echo mysql_error($db) in den HTML Teil geschrieben? Hast du das so in den browser bekommen?

Nochmals den ganzen Code zur Sicherheit:
Code: Select all
<?php
$db = mysql_connect("iiiii", "ooooo", "zzzzzz");
$res = mysql_db_query("elektroling_de", "select firmenname, Land from elektroling_de.ant1
group by zif order by zif limit $start,15");
echo mysql_errror($db);
for ($i=0; $i<mysql_num_rows($res); $i++){ ?>




Der Sinn wäre, die aufgetretene Mysql-Fehlermeldung in den Browser zu kriegen, denn nur so kann die Ursache gefunden werden.
Last edited by Hanspeter Thöni on 21. July 2007 07:00, edited 1 time in total.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby DJ DHG » 20. July 2007 20:56

Moin Moin!

Hinzu kommt noch, dass die Funktion mysql_db_query() veraltet ist. (Seit PHP 4.0.6)

Code: Select all
<?PHP

$db = mysql_connect("iiiii", "ooooo", "zzzzzz");
mysql_select_db("elektroling_de", $db) or die("Konnte Datenbank nicht auswaehlen!");

$res = mysql_query("SELECT firmenname, Land FROM elektroling_de.ant1 GROUP BY zif ORDER BY zif LIMIT $start, 15", $db) or die ("DB-Fehler-Nummer" .mysql_errno(). "<br>|| Meldung: ". mysql_error());

?>


mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby yellojocker » 20. July 2007 22:57

also so wie es den Anschein macht ist meine Seite ein Totalschaden.
es kommt so

Code: Select all
<?php $db = mysql_connect("iiiii", "ooooo", "zzzzzz");
$res = mysql_db_query("elektroling_de", "select firmenname, Land from elektroling_de.ant1 group by zif order by zif limit $start,15"); for ($i=0; $i<mysql_num_rows($res); $i++){ ?>


oder so

Code: Select all
<?php
$db = mysql_connect("iiiii", "ooooo", "zzzzzz");
$res = mysql_db_query("elektroling_de", "select firmenname, Land from elektroling_de.ant1
group by zif order by zif limit $start,15");
echo mysql_error($db);


im Browser zur gleichen Fehlermeldung und die lautet:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /is/htdocs/ppppp/www.oooooo.de/ddddddd/eee/rrrrr.php on line 123


Die Mysql Daten habe ich damals mit Dos befehlen erzeugt die Daten standen in einer Excel Tabelle.


Edit by DJ DHG
Bitte Code- und Zitattags (Quote) benutzen!
yellojocker
 
Posts: 30
Joined: 27. January 2005 11:35

Postby Hanspeter Thöni » 21. July 2007 07:24

Was micht wundert, dass durch mysql_error() keine zusätzliche Fehlermeldung erzeugt wird. Es ist klar dass deine Query ein Syntaxfehler produziert. Wieso weiss ich das: Weiterlesen...



Ich habe mir deine Seite mal online angeschaut.
Wenn ich den Buchstaben 'A' anklicke. bekommte ich das hier:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /is/htdocs/48017/www.xxxx.de/xxxx/abc/rechtsa.php on line 112.

Dann habe ich mir den Link 'Weiter' genauer angeschaut. Der Sieht so aus
Code: Select all
http://www.xxx.de/xxx/abc/rechtsa.php?start=50.1


Und siehe da, genau hier ist die ominöse Variable $start zu finden.
Der Wert der übergeben wird ist 50.1 Da ich ja (wie oben) schon vermutet habe dass die Variable direkt in den Query String geht, habe ich mit mysql 5.x getestet was passiert wenn eine Query mit Limit 50.1,100 abgeschickt wird. Das Resultat: Syntaxfehler

Nun, habe ich den Link von 'weiter' direkt in die Adress-Zeile kopiert und 50.1 in 50 geändert.

Und siehe da: Das Resultat:
D AEG Niederspannungstechnik GmbH & Co. KG
D AES GmbH
D Aestuver Süd Bauplatten GmbH
D AET Alternative Energie Technik GmbH
D Afd Deutschland GmbH
D Afm Architekturbüro Freudenberg
D Ag Sat
D Ag Thü...
....


Es erschienen 50 Namen....

Folgendes Fazit:
1. Die per GET übergebene Variable $start führt zu einem Syntaxfehler.
2. Beim ersten aufruf per Buchstabe 'A' wird die Variable nicht übergeben was (sofern diese nicht im php-Code gefüllt wird) ebenfalls mit Syntax-Error quitiert wird.
3. Bitte nachwievor Punkt 2 meiner ersten Antwort beachten (Sicherheit)
4. Ich wundere mich nur, warum per mysql_error keine Fehlemeldung erscheint.
5. Der LIMIT Klausel dürfen nur Ganzzahlen übergeben werden. Wie sich ältere Mysql-Versionen verhalten kann ich nicht testen.
6. Falls du den Fehler noch nicht beheben kannst nimm die LIMIT Klausel halt mal ganz raus, dann kommen zwar alle Sätze auf einmal aber immernoch besser als gar keine

Edit:
Achja da kommt mir noch ein Gedanke warum deine Codeänderungen keine Änderung an der Fehlermeldung bringt:
Hast du die richtige .php Datei geändert und hochgeladen? Da es anscheinend pro Buchstaben eine eigene php gibt, hat es wohl duzende php.dateien welche im Aufbau gleich sind, da ist schnell mal die falsche erwischt.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby yellojocker » 21. July 2007 11:01

lieber klauspeter,
so wie es aussieht hast Du den Fehler gefunden, ich hoffe ich komme jetzt allein weiter. Vielen Dank für die Mühe. Ich muß jetzt alles neu schreiben, werde mich gleich auch vom Frame trennen.

Gruß Yellojocker
yellojocker
 
Posts: 30
Joined: 27. January 2005 11:35

Postby KingCrunch » 21. July 2007 19:58

Den Fehler hat er gleich in seinem ersten Posting gefunden -.-
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 13 guests