kostenloser Webspace werbefrei: lima-city


PHP MySQL Klasse, Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    Hi,

    ich hab da mal wieder ein Problem:

    Auszüge aus der Klasse:
    protected $connection;
    public $MySQLResult;
    
    function connect()
    {
       $this->connection = mysql_connect($this->getMySQLHost(), 
                                        $this->getMySQLUser(), $this->getMySQLPassword()
    );
    }
    
    function execute(strStatement)
    {
        $Status = mysql_query($strStatement, $this->connection); 
        $this->MySQLResult = mysql_fetch_array($Status);             
    }


    so nun setze ich ja mit $this->MySQLResult = mysql_fetch_array($Status); quasi das ergebnis.

    und nun möchte ich dieses auslesen:

    index.php
    $New = new Database();
    //...
    //...
    while($row=$New->MySQLResult)
    {
        $row['user_id'];
    }



    so jetz könnt ihr euch sicherlich denken das es nicht funktioniert, und richtig es funktioniert nicht =(

    warum? und wie kann ich im nachhinein die Zeilen zählen also mysql_num_rows($New->MySQLResult);?

    *Nicht der Master im PHP OOP, aber in C++ OOP^^*


    Beitrag zuletzt geändert: 12.2.2009 17:47:39 von myhead
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    1. Wieso verwendest du Setter und Getter innerhalb der Klasse? Man verwendet diese, um auserhalb der Klasse auf Eigenschaften zuzugriefen.
    2. $row['user_id']; ist denke ich kein assoziatives Array (hast ja die Methode MySQLResult() nicht gepostet).
  4. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    1) das hab ich so gelernt, und ich weiß auch wofür settings und gettings da sind -> C++ freak^^ ..und kann mir kaum vorstellen das das in PHP ganz anders sein wird...außerdem ist das auch nicht so wichtig....


    2)MySQLResult ist ein Attribut^^ ...so und ich habe dann gedacht, kann man ja in einem Attribut "speichern" also $this->MySQLResult = mysql_fetch_array(....,....) ;

    ich hab ja auch gedacht da man ja:
    $do = mysql_query("SELECT * FROM table");
    
    while($row = mysql_fetch_array($do))
    {
       echo $row['Spaltenname'];
       echo $row['Index'];
    }

    machen kann, kann man dann auch:

    while($row=$New->MySQLResult)
    {
        echo $row['Spaltenname'];
       echo $row['Index'];
    }


    weil ist ja eigl. genau dasselbe nur "über Umwege" sag ich mal^^ ...weil die Eigenschaft MySQLResult ist ja = mysql_fetch_array('query');


    Beitrag zuletzt geändert: 12.2.2009 17:47:09 von myhead
  5. mal ne nebenfrage: definierst du wirklich $Klasse richtig?
    Oder weist du, ob er in die Klasse springt?
  6. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    meinst du das:

    $New = new Database()
    //bzw. 
    $Klasse = new Database();
    /*ich glaub iwo imhier geposteten  quelltext hab ich geschrieben $Klasse aber ist in 
    meinem Original schon richtig, dort erstelle ich nur ein Objekt der Klasse..*/


    außerdem funktioniert die soweit, also SQL-Statements ohne "Ergebnis" werden ausgeführt -> Drop, Truncate, Create usw.
    und die connection() funktion bzw. die hier nicht aufgeführte gibt mir auch jeweils die richtigen werte jenachdem True oder False.



    //EDIT, hab das jetzt in den geposteten Quelltexten jetz einheitlich gemacht

    Beitrag zuletzt geändert: 12.2.2009 17:49:01 von myhead
  7. t*****b

    myhead schrieb:
    1) das hab ich so gelernt, und ich weiß auch wofür settings und gettings da sind -> C++ freak^^ ..und kann mir kaum vorstellen das das in PHP ganz anders sein wird...außerdem ist das auch nicht so wichtig....


    Moment. Man verwendet Set- und Getmethoden um von auserhalb der Klasse auf als private deklarierte Eigenschaften zuzugreifen. Das macht innerhalb(!) einer Klasse keinen Sinn, weder in C++, noch in Java noch in PHP. Aber ist ja dein Bier.

    myhead schrieb:
    2)MySQLResult ist ein Attribut^^ ...so und ich habe dann gedacht, kann man ja in einem Attribut "speichern" also $this->MySQLResult = mysql_fetch_array(....,....) ;

    ich hab ja auch gedacht da man ja:
    $do = mysql_query("SELECT * FROM table");
    
    while($row = mysql_fetch_array($do))
    {
       echo $row['Spaltenname'];
       echo $row['Index'];
    }

    machen kann, kann man dann auch:

    while($row=$New->MySQLResult)
    {
        echo $row['Spaltenname'];
       echo $row['Index'];
    }


    weil ist ja eigl. genau dasselbe nur "über Umwege" sag ich mal^^ ...weil die Eigenschaft MySQLResult ist ja = mysql_fetch_array('query');



    Vom der Logik her nachvolziehbar, jedoch hast du einen kleinen Denkfehler. Mysql_fetch_* liefert dir nicht die kompletten Ergebnisse der SQL-Abfrage, sondern jeweils immer nur eine einzelne Zeile! Nach jedem Durchlauf von mysql_fetch_* wird ein Zeiger auf die nächste Zeile gelegt. Du rufst also (solange Ergebnisse zurück geliefert werden) immer die gleiche Funktion mehrmals auf (while($row = mysql_fetch_*($res))) und gibst nicht expliziert an, welche Zeile zurück kommen soll. Das handelt MySQL selber, indem es intern nach jeder Zeile zur nächsten Zeile springt. Das heißt, du musst erst mal in deiner Datenbankklasse in deiner Methode die Ergebnisse in einem Array initialisieren, welchen du dann (auserhalb der Klasse) mit einer Schleife durchgehen kannst.
  8. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    Hey, ja ist mir auch schon aufgefallen, hab das jetzt erstmal so gemacht, das ich nur den mysql_query() zurückgebe...reicht erstmal für testzwecke =)

    danke =)

  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!