MySQL Fehler...

[GCM]DaNNy

New Member
Hallo,

leider gibt es seit meinem Wechsel auf einen Virtual Server mit Windows ein kleines Problem bei einem PHP Script, welches mit der MySQL-Datenbank kommuniziert. Übrigens, das Problem gab es mit dem exakt gleichen Code bei ALL-INKL nicht!

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\inetpub\vhosts\gcmafia.de\httpdocs\userdetails.php on line 16

So schaut das Script im Detail aus:

PHP:
<?
        // Initial Data Setup
        $server = "Zensiert";
        $username = "Zensiert";
        $password = "Zensiert";
        $database = "Zensiert";
        $membertable = "gcmafia_members";
 
        // DB Connect
        $dbconnection = mysql_connect($server, $username, $password);
 
        // DB Select
        mysql_select_db($database);
 
        $membertables = mysql_query("SELECT * FROM gcmafia_members WHERE userid=$userid");
        $memberdata = mysql_fetch_array($membertables, MYSQL_ASSOC);
                mysql_error();
 
        if(strlen($memberdata['name']) > 0)
        {
                echo "<table align='center' class='imagedetailstable' border='0' cellpadding='0' cellspacing='1' width='100%'>";
 
                echo "<tr>";
                echo "<td>";
 
                echo "<br>";
 
                echo "<table align='center' border='0' cellpadding='0' cellspacing='0' width='95%'>";
 
                echo "<tr>";
                echo "<td width='250'>";
 
                echo "<table bgcolor='#444444' border='0' cellpadding='2' cellspacing='0'>";
                echo "<tr class='galleryimagelink'>";
                echo "<td style='font-size: 9px; text-align: center;'>";
                if(strlen($memberdata['imageurl']) > 0) echo "<a href='{$memberdata['imageurl']}' target='_blank'><img src='{$memberdata['imageurl']}' title='Klicke hier für Originalgröße' border='1' height='230' width='230'></a>";
                else echo "<img src='images/design/nouserpic.jpg' title='Kein Bild vorhanden' border='1' height='230' width='230'>";
                if(strlen($memberdata['imageurl']) > 0) echo "<br><font style='font-size: 9px;'>Klicke auf das Bild für Originalgröße</font>";
                echo "</td>";
                echo "</tr>";
                echo "</table>";
 
                echo "</td>";
 
                echo "<td>";
 
                echo "<b>{$memberdata['name']}</b><br>";
                echo "<br>";
                echo "<font class='imagedetailstext'><b>Position:</b> {$memberdata['position']}<br>";
                echo "<b>Level:</b> {$memberdata['level']}<br>";
                echo "<b>Member seit:</b> {$memberdata['joined']}<br>";
                echo "<br>";
                if(strlen($memberdata['email']) != 0)echo "<b>E-Mail:</b> {$memberdata['email']}<br>";
                if(strlen($memberdata['icq']) != 0)echo "<b>ICQ:</b> {$memberdata['icq']}<br>";
                if(strlen($memberdata['msn']) != 0)echo "<b>MSN:</b> {$memberdata['msn']}<br>";
                echo "<br>";
                echo "<b>Status: </b>";
                if($memberdata['status'] == 0) echo "<font color='#ff0000'><b>inaktiv</b></font><br>";
                else if($memberdata['status'] == 1) echo "<font color='#006666'><b>aktiv</b></font><br>";
                else if($memberdata['status'] == 2) echo "<font color='#3366ff'><b>Urlaub</b></font><br>";
                else if($memberdata['status'] == 3) echo "<font color='#000000'><b>-</b></font><br>";
                else echo "<font color='#ff8000'><b>ERROR</b></font><br>";
                echo "<br>";
                echo "<br>";
                if(strlen($memberdata['description']) > 0) echo "<b>Member Beschreibung:</b><br>";
                if(strlen($memberdata['description']) > 0) echo "<p class='imagedetailsdescription'>{$memberdata['description']}</font></p>";
 
                echo "</td>";
 
                echo "</tr>";
 
                echo "</table>";
 
                echo "<br>";
 
                echo "</td>";
                echo "</tr>";
 
                echo "</table>";
        }
 
        else
        {
                echo "<table class='errortable' align='center' border='0' cellpadding='0' cellspacing='1' height='100' width='80%'>";
                echo "<tr>";
                echo "<td><p class='errortext'>Ungültige Member ID!</p></td>";
                echo "</tr>";
                echo "</table>";
        }
 
        echo "<br>";
        echo "<a href='members.php'>Zurück</a>";
 
        // DB Disconnect
        mysql_close($dbconnection);
        ?>

Wäre nett, wenn jemand mal ein Blick auf den Grund für den Fehler wirft. Vielen Dank im Voraus!

MfG [GCM]DaNNy

PS: Auf http://www.gcmafia.de/test.php findet Ihr die aktuellen PHP (Version 5.2.6) Einstellungen... ;)
 
Last edited by a moderator:
Die Fehlermeldung sagt, dass dein Query fehlgeschlagen ist. Deshalb gibt es kein Result Ressource.

Wenn du die Rückgabewerte der MySQL-Funktionen auswerten würdest, könnte dein Programm sogar darauf reagieren und ggf. die MySQL-Fehlermeldung loggen oder sowas.

Funktionen ins Blaue hinein abzufeuern nach dem Motto "wird schon klappen" ist kein guter Stil.
 
Da ich mich selbst mit PHP oder MySQL nicht so gut auskenne, müsste ich bis Samstag auf den Scripter warten.

Kannst Du mir bitte erklären, wie der Code auszusehen hat, damit die Fehlermeldung nicht mehr erscheint?
 
PHP:
if (!$membertables = mysql_query("SELECT * FROM gcmafia_members WHERE userid=$userid")) {
  // Hier irgendwas einfügen, das passieren soll, wenn der Query fehlschlägt.
  die();
}
 
Könnte es sein, dass bei ALL-INKL die "register_globals" noch auf "on" stehen?
(Ein Luser würde jetzt sofort fragen: "Wo kann ich das denn nachsehen?" Ein Winner googelt erstmal! :-)

Und versuche bitte mal vor dem SELECT folgenden Code einzubauen:
PHP:
echo '<h1>UserID: &gt;' . $userid . '&lt;</h1>';

Ich vermute sehr stark, das "$userid" nicht gesetzt ist.

Gruß
Claus
 
Wenn $userid direkt aus dem Request kommt, ist das auch nicht gut. Der Code verlässt sich komplett auf MagicQuotes, um eine SQL-Injection abzuwehren.

Das Mindeste wäre, per sprintf einen Integer-Wert zu erzwingen.
 
Könnte es sein, dass bei ALL-INKL die "register_globals" noch auf "on" stehen?
(Ein Luser würde jetzt sofort fragen: "Wo kann ich das denn nachsehen?" Ein Winner googelt erstmal! :-)

Ja, es hat in der Tat an den PHP-Einstellungen gelegen. Dann muss "register_globals" bei meinem alten Hoster immer an gewesen sein (O_O), naja ich habs jetzt in der "php.ini" ebenfalls eingeschaltet. Man sollte es zwar nicht tun, aber es ist ja nur eine Übergangslösung. Vielen Dank schon mal für Eure schnelle Hilfe, ich werde diesen Thread an den Scripter weiterleiten. Er wird sicher wissen, was zu tun ist. ;)

Viele Grüße

[GCM]DaNNy
 
Back
Top