mysql_num_rows Wert 0?

FDS-Ultimate

Mitglied
Ich habe mir diverse Fehler meldungen dazu bereits angeschaut aber keine gab für mich den den explizieten Fehler aus deswegen benötige ich einmal hilfe zu meinem Code.

ich benutzte das script
http://www.tutorials.de/forum/php-tutorials/9684-php-mysql-login-system-mit-sessions.html

hier mein dazugehöriger Programm Code

Code:
<?php
class secure
{

function adminlogin()
{
    include_once "connect/mysqlcon.php";
    $adbconnect = new dbcon();
    $adbconnect->db1();
    $anick1 = $_POST['adminnick'];
    $apw1   = $_POST['adminpass'];
    $a ="SELECT * FROM ".$pre."_user WHERE (var1 = '".$anick1."') AND (var2 = '".md5($apw1)."')";
    $boxed = mysql_query($a);
    if (mysql_num_rows ($boxed2) > 0)
        {
            #$boxed2     = mysql_fetch_array ($boxed);
            $groupcomb1 = $boxed2["var4"];
            $query      = "SELECT * FROM ".$pre."_groupcomb WHERE var1 = '$groupcomb1'";
            $results    = mysql_query($query);
            $error      = mysql_error();
            $box1       = mysql_fetch_object($results);
            $groupcomb2 = $box1->var2;
            $query      = "SELECT * FROM ".$pre."_group WHERE id = '$groupcomb2'";
            $results    = mysql_query($query);
            $error      = mysql_error();
            $box2       = mysql_fetch_object($results);
            $access     = $box2->var1;
            if($access == "1")
            {
            #
            //sesion id wird erstellt
            #
            $id = $boxed2->id;
            include_once "function/passpharse.php";
            $createses = new passpharse();
            $createses->idgen();
            #
            //session id wird in die datenbank eingetragen
            #
            $aendern = "UPDATE ".$pre."_user Set var18 = '$sesid'WHERE id = '$id'";
            $update  = mysql_query($aendern);
            $_SESSION["admin_id"] = $boxed2["id"];
            $_SESSION["admin_nickname"] = $boxed2["var1"];
            $_SESSION["admin_email"] = $boxed2["var3"];
            $_SESSION["sesid"] = $sesid;
            include_once "function/ipidentify.php";
            $var1 = "\nAm ";
            $var2 = " um ";
            $var3 = " hat die folgende IP-Adresse ";
            $var4 = " sich im Admin Control Pannel mit dem folgendem Username Eingelogt ";
            include_once "function/timestamp.php";
            $logtext = array($datum, $uhrzeit, $realip);
            $logentry = fopen ( 'log/logadmintrue', 'a' );
            fwrite($logentry, $var1);
            fwrite($logentry, $logtext[0]);
            fwrite($logentry, $var2);
            fwrite($logentry, $logtext[1]);
            fwrite($logentry, $var3);
            fwrite($logentry, $logtext[2]);
            fwrite($logentry, $var4);
            fwrite($logentry, $anick1);
            fclose($logentry);
            header ("Location: panel.php?panel=overview");
            }else
            {
                #Weiterleitung an den Error Handler die weiterleitedt auf die index.php für einen erneuten Versuch.
                include_once "function/ipidentify.php";
                $var1 = "\nAm ";
                $var2 = " um ";
                $var3 = " hat die folgende IP-Adresse ";
                $var4 = " sich im Admin Control Pannel versucht Einzuloggen mit folgenden Username ";
                include_once "function/timestamp.php";
                $logtext = array($datum, $uhrzeit, $realip);
                $logentry = fopen ( 'log/logadminfalse', 'a' );
                fwrite($logentry, $var1);
                fwrite($logentry, $logtext[0]);
                fwrite($logentry, $var2);
                fwrite($logentry, $logtext[1]);
                fwrite($logentry, $var3);
                fwrite($logentry, $logtext[2]);
                fwrite($logentry, $var4);
                fwrite($logentry, $anick1);
                fclose($logentry);
                header ("Location: index.php?error=e103");
            ##########Erstellung des ZugriffsProtokols##########
            }
        }else
        {
            ##########IP Adressen Abfrage (nicht getestedt)##########
                include_once "function/ipidentify.php";
                $var1 = "\nAm ";
                $var2 = " um ";
                $var3 = " hat die folgende IP-Adresse ";
                $var4 = " sich im Admin Control Pannel versucht Einzuloggen mit folgenden Username ";
                include_once "function/timestamp.php";
                $logtext = array($datum, $uhrzeit, $realip);
                $logentry = fopen ( 'log/loguser', 'a' );
                fwrite($logentry, $var1);
                fwrite($logentry, $logtext[0]);
                fwrite($logentry, $var2);
                fwrite($logentry, $logtext[1]);
                fwrite($logentry, $var3);
                fwrite($logentry, $logtext[2]);
                fwrite($logentry, $var4);
                fwrite($logentry, $anick1);
                fclose($logentry);
                header ("Location: index.php?error=e102");
            ##########Erstellung des ZugriffsProtokols##########
            #Errohandler neue seite mit automatischer weiterleitung auf den Login. 
        }
}
function controlladmin()
{
    if (!isset ($_SESSION["admin_id"]))
    {
        header ("Location: index.php");
    }
    $query      = "SELECT var18 FROM ".$pre."_user WHERE id = ".$_SESSION["admin_id"]."";
    $results    = mysql_query($query);
    $box1       = mysql_fetch_object($results);
    $session    = $box1->var18;
    if ($_SESSION["admin_id"] == $session)
    {
    }else
    {
        header ("Location: index.php");
    }
}
function logoutadmin()
{
ob_start ();

session_start ();
session_unset ();
session_destroy ();

header ("Location: index.php");
ob_end_flush ();
}
}
?>
Durch das Debugen habe ich erfahren das er zwar die Datenbank anspricht und auch den gewünschten Satz an daten bekommt allerdings gibt mysql_num_rows den wert 0 aus.

Kann einer von euch einen Fehler erkennen bei bedarf kann ich die damit verknüpften Dateien ebenfalls noch mit ergänzen.

MFG euer FDS-Ultimate
 
Hi,

schau mal genau hin:

Code:
$boxed = mysql_query($a);
    if (mysql_num_rows ($boxed2) > 0)

Beim Testen solltest Du immer [phpf]error_reporting[/phpf] aufdrehen. Dann hättest Du eine Meldung àla $boxed2 is not a valid MySQL Result Resource bekommen müssen.

LG
 
danke für deine schnelle antwort dies wahr leidern icht der Fehler ich habe die Änderung durchgeführt doch Passiert immern och nichts der wert 0 taucht weiterhin auf.

ich habe das ganze jetzt noch mal Debugen lassen es erscheint immernoch der Wert 0 obwohl er ja diesen Datensatz hat

Bemerkung:

$boxed2 wahr das ergebnis nach einer While Schleife um mysql_num_rows zu zwingen zu zählen aber selbst das klappt leider nicht.

Probiert habe ich es mit php 4 (Webserver) und 5 (Lokaler Webserver)

und der Aktuellen version von Apache und MYSQL

edit 1: nochmal eben ne kleine korrektur im Text

edit2: error reporting aufgedreht auf E_ALL (2048) und nicht ein fehler in dem gesammten Script Oo wie kann das angehen?
 
Zuletzt bearbeitet:
Okay nach einem kleinen eingabe fehler habe ich folgende meldung erhalten kontne bis jetzt aber nicht viel mit anfangen.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /homepages/31/d273729018/htdocs/game/intern/acp/secure/secure.php on line 15

er sagt mir das das keine gültige Resouce sei allerdings würde mir explizit nichts dazu erinfallen da im vorfeld das ganze schon geklappt hatte udn ich den code ansich nur erweitert habe.
 
Hi,

dann poste doch mal die betreffende Stelle im Code, wie sie jetzt ist und zeige Deine Debugging-Maßnahmen.

Und nimm Dir bitte etwas mehr Zeit für Deine Beiträge und achte auf die Rechtschreibung, wie es in unserer Netiquette, Punkt 15 steht. Besonders ein paar Satzzeichen würden das Lesen erleichtern. Danke.

LG
 
Hi,

dann poste doch mal die betreffende Stelle im Code, wie sie jetzt ist und zeige Deine Debugging-Maßnahmen.

Und nimm Dir bitte etwas mehr Zeit für Deine Beiträge und achte auf die Rechtschreibung, wie es in unserer Netiquette, Punkt 15 steht. Besonders ein paar Satzzeichen würden das Lesen erleichtern. Danke.

LG


Okay, ich werde ein wenig mehr versuchen auf meine Rechtschreibung zu achten, leider wahr ich nie Besonders gut in solchen sachen. :-)

Also um meine Debugging Maßnahmen mal näher zu Erleutern...

Code:
if (mysql_num_rows ($boxed) > 0)
        {
       # Der Gesammte inhalt wurde von mir Auskommentiert um einen Inhaltsfehler zu Vermeiden dies Heißt ja das der Fehler im Oberen bereich Liegen muss.
       }


und zwar in diesem Hier:..

Code:
    error_reporting(E_ALL);
    include_once "connect/mysqlcon.php";
    $adbconnect = new dbcon();
    $adbconnect->db1();
    $anick1 = $_POST['adminnick'];
    $apw1   = $_POST['adminpass'];
    $a ="SELECT * FROM ".$pre."_user WHERE (var1 = '".$anick1."') AND (var2 = '".md5($apw1)."')";
    $boxed = mysql_query($a);

mysqlcon.php

Code:
class dbcon
{
    var $dbhost = "";
    var $dbuser = "";
    var $dbpass = "";
    var $dbname = "";
    var $dbprefix = "";
    function dbconnect()
    {
        $link_id = @mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
        if ( !$link_id )
        {
            echo 'Fehler beim Verbinden zur MySQL Datenbank!';
            die();
        }
        mysql_select_db($this->dbname, $link_id);
        $prefix = $this->dbprefix;

    }
    function db1()
    {
        $this->dbhost   = 'localhost';
        $this->dbuser   = 'root';
        $this->dbpass   = 'Devil-001';
        $this->dbname   = 'orbitalgame';
        $this->dbprefix = 'a';
        $this->dbconnect();
    }

die Variabeln werden ordnungsgemäß per Post übergeben hier zu erkennen....
index.php

Code:
<html>
    <head>
        <title>Admin Control Panel Ver. 0.1</title>
    </head>
    <body bgcolor="#101C29">
        <center>
        <br><br>
        <font color="#FFFFFF">Admin Control Panel ver0.1</font>
        <?php if($_GET['error'] == "e101"){ echo "<font color=\"#FFFFFF\">Zugrif Verweigert, der Angegebene Benutzer wurden icht in der Datenbank gefunden.</font>";}?>
        <form method="post" action="control.php?login=1">
            <table>
                <tr>
                    <td>
                        <font color="#FFFFFF">Benutzername:</font>
                    </td>
                    <td>
                        <input type="text" name="adminnick">
                    </td>
                </tr>
                <tr>
                    <td>
                        <font color="#FFFFFF">Passwort:</font>
                    </td>
                    <td>
                        <input type="password" name="adminpass">
                    </td>
                </tr>
            </table>
            <input type="submit" name="submit" value="Einloggen">
        </form>
        <?php if($_GET['error'] == "e102"){ echo "<font color=\"#FFFFFF\">Zugrif Verweigert, der Angegebene Benutzer hat keine Zugriffsrechte auf die Administrationsebene.</font>";}?>
        </center>
    </body>
</html>
 
Hi,

Deine Abfrage schlägt halt fehl. Lass Dir mal den Fehler und die zusammengesetzte Query ausgeben:

PHP:
$boxed = mysql_query($a) or die(mysql_error() . '<br />' . $a);

LG
 
@kuddeldaddeldu ich danke dir die MYSQL Fehler ausgabe daran habe ich jetzt auch nciht mehr gedacht :D dort stand alles Drinn was man Brauchte :-(

Also erstmal ein Riesen Großes Danke schön und nun für alle die dies Brauchen Fehler erkannt, gefahr Gebannt....

Der Fehler wahr das der Tabellen Prefix in der mysqlcon.php den Prefix für die Tabellen in folgender Variable eingeschrieben hat.

$prefix

zudem stand in den abfragen aber nur...

$a ="SELECT * FROM ".$pre."_user WHERE....

da Lag der wurm ich habe eine nicht Existierende Variable versucht abzufragen.

Danke dir nochmal kuddeldaddeldu :D
 
Zurück