Anzeige:
Ergebnis 1 bis 15 von 15

Thema: resource id#4

  1. #1
    Registrierter Benutzer
    Registriert seit
    06.11.2003
    Ort
    Byreuth
    Beiträge
    50

    resource id#4

    hi, ich hab folgendes script:

    PHP-Code:
    <?php 

    include "../checkuser.php";

    // Values von change_user_main.php und die UserID

    $oldpwd $_POST["oldpwd"];
    $newpwd $_POST["newpwd"];
    $newpwd1 $_POST["newpwd1"]; 
    $userid $_SESSION["user_id"];

    //Verbindung mit der Datenbank aufbauen

    //hier die informationen die php braucht ...

    $server "127.0.0.1";
    $user "xxx";
    $password "xxx";
    $database "xxx";

    //Hier die verbindung

    $conn = @mysql_connect($server$user$password);
      if (!
    $conn
        {
            echo 
    echoerror();
        }

    //Hier wird die Datenbank ausgewählt

    $db mysql_select_db($database$conn);
        if (!
    $db
        {
            echo 
    echoerror();
        }

    //Überprüfen ob Felder leer sind und wenn nicht,
    //Überprüfen ob $newpwd nicht gleich $oldpwd ist
    //wenn ja Fehlerausgaben!

    if($oldpwd == "" or $newpwd == "" or $newpwd1 == "")
       {
       echo 
    "Bitte f&uuml;llen Sie alle Felder aus<br>";
       }
    else
        {
        if((
    $newpwd === $newpwd1) && ($newpwd !== $oldpwd))
            {
            echo 
    "<br>";
            }
        if(
    $newpwd !== $newpwd1
            {
            echo 
    "Die zwei neuen Passw&ouml;rter sind nicht gleich! Bitte korigieren Sie Das<br>";
            }
        if((
    $oldpwd === $newpwd) && ($oldpwd === $newpwd1))
            {
            echo 
    "Das neue und das alte Password ist gleich! KEINE &Auml;nderung!<br>";
            }
        }

    //Überprüfen, ob $oldpwd = altes password,
    //wenn ja, weiter
    //wenn nicht stopp!

    $sql "SELECT Kennwort FROM benutzerdaten WHERE ID = $userid";
    $i mysql_query ("$sql");
    echo 
    "$i";
    ?>
    der obere teil enthält ein include, der überprüft ob man berechtigt ist die datei auszuführen. dann kommen ein paar variablen, die die values von einem formular auslesen, dann ein paar überprüfungen und beim der sql abrage bekomme ich den fehler:

    "Resource id #4"

    woran kann das liegen? wenn ich den befehl in phpmyadmin eingeben funzt es einwandfrei! natürlich muss ich dann stat " WHERE ID = $userid";", die id einsetzten doch an dieser variablen kann es nicht liegen, da ich sie ausgeben kann!! bitte helft mir!!

    johnpatcher
    ich liebe linux

  2. #2
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo!

    Das ist keine Fehlermeldung, sondern ganz Korrekt die Ressource ID deiner Abfrage, die du dann an mysql_fetch_array() oder mysql_fetch_object() weiterreichen musst.


  3. #3
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    Gültigkeit Resource ID

    $result = my_sqlquery("bla bla....")

    Das Ergebnis in $result ist ja die Resource ID
    also der Verweis auf das Ergebnis in MySQL.

    Kann ich diese Variable $result auch an andere
    Programme weitergeben um mit dem Ergebnis
    weiterarbeiten ? Wenn ja, wie lange bleibt
    das Ergebnis in mysql erhalten, bis es "verworfen"
    wird.

    Torsten.E

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    my_sqlquery = mysql_query

    natürlich hier nur verschrieben, sorry

    Torsten.E

  5. #5
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo Thorsten,

    1.
    Die Ressource ID ist eine ID, die vom PHP MySQL Modul als interne Kennung erzeugt wird. Andere Programme können damit nichts anfangen, weil MySQL von dieser ID keine Kenntnis hat.

    2.
    Die MySQL Datenbank merkt sich das Ergebnis des Queries lediglich im internen cache... von deiner Ressource ID weiß es ja nichts.
    Ist auch nicht nötig, denn sämtliche Ergebnisse wurden bereits direkt nach dem Query an das PHP Modul weitergegeben und dort gecached. Aus diesem cache wird dann z.B. über mysql_fetch_array() "gefetcht". Überprüfen kannst du das, indem du einfach nach dem Query die Verbindung zur Datenbank schließt... die Daten kannst du trotzdem noch über ein fetch auslesen.

    Beispiel:
    PHP-Code:
    <?php
    $link 
    mysql_connect("localhost","root","");
    mysql_select_db("test",$link);
    $res mysql_query("select * from tabelle");
    mysql_close($link);
    print_r(mysql_fetch_array($res));
    ?>
    -----

    Wir lernen daraus: Nur die Daten über das Query selektieren, die wir später auch wirklich benötigen... alles andere holt sich PHP unnötig aus der Datenbank!

    Hoffe es ist ein wenig klarer geworden,

    Gruß,

    Gaert
    Geändert von Gaert (07-04-2004 um 12:49 Uhr)


  6. #6
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    Cache aber dann ganz groß ?

    Hmmm... das habe ich verstanden.

    Dann muß ich doch mal fragen, wie groß kann den dann der Cache
    sein. Beispiel ich bekomme als Ergebnis sagen wir mal 300-700 Adressen,
    das kann dan schon speicherfressend werden, wenn mehrere das PHP-Modul
    nutzen.

    Wie händelt man sowas am geschicktesten.

    Torsten.E

  7. #7
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Da kann ich dir im Moment leider auch keine Antwort geben... wenn du etwas C kannst, kannst du auchmal im Modul Quelltext danach suchen - ich persönlich hab noch nicht nachgeschaut... man hat mir oben geschriebenes nur mal so erklärt.
    700 Adressdatensätze sind aber eigentlich noch harmlos - interessant wirds erst ab einer Million


  8. #8
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    700 Adressen oder mehr

    Es get halt darum, dass ich eine Adress-Suche habe, und im Suchergebnis
    der Benutzer nachtürlich "blättern" kann. Da fragt sich halt, wie groß macht
    man dann so ein "Blätterbereich" ohne dass dem Server gleich der Speicher
    rausfliegt, oder das Zeug so langsam wird, dass der User die Seite
    verläßt, was ja keiner will.

    Bei jedem Aufruf der Seite muß natürlich die Suche wieder durchlaufen
    werden. Deshalb überhaupt die Frage, ob man das Suchergebnis nicht
    zwischenspeichern kann, um es für die Blättern-Funktion zu benutzen.

    Torsten.E

  9. #9
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Mooment...

    Wenn du eine Suche machst mit:

    SELECT VORNAME, NACHNAME, STRASSE WHERE VORNAME = 'Max';

    dann erhälst du ja keine 700 Ergebnisse - es sei denn du hast 700 Maxes in deiner Tabelle.

    Und selbst wenn: so ein Datensatz belegt nur ein paar Byte Speicher.

    Im Übrigen bietet sich bei vielen Ergebnissen das Blättern an (wie du es vor hast), und dann machst du eh z.B. ein LIMIT 0, 30 ans Ende, wenn du nur 30 Datensätze pro Seite haben willst - mehr bekommst du dann auch nicht!.

    Wenn du natürlich auf ne Tabelle mit drei Millionen Datensätzen und Zehntausend Feldern immer ein SELECT * FROM machst, und nur fünf Felder der ersten 20 Datensätze darstellen willst, dann solltest du erstmal lernen richtige Abfragen zu schreiben...

    Und ich sags nochmal... wegen 700 Popeldatensätzen brauchst du dir keine Sorgen zu machen.
    Geändert von Gaert (07-04-2004 um 14:37 Uhr)


  10. #10
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    Limit 300 oder so in "Mühchen"

    Das Limit zum blättern sollte schon höher liegen.

    Zeig mir alle Adressen aus München, da kommt gleich mal ne Anzahl
    zusammen. Jetzt dachte ich halt, dass das Limit auf 300 stegt. D.h.
    mit 5-10 Adressen pro Anzeige kann er dann so 30 Seiten vorwärts/rückwärts
    blättern.

    Oder ist sowas schon zuviel.

    Torsten.E

  11. #11
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Du denkst zu kompliziert!
    PHP-Code:
    <?php
    $page 
    $_GET['page'];
    $query "SELECT * FROM xyz WHERE city = 'Muenchen' LIMIT ". ($page-1) * 15 .  ",15"
    ...
    ?>
    Fertig...

    Immer nur 15 Datensätze und du kannst blättern wohin du willst!
    Geändert von Gaert (07-04-2004 um 14:44 Uhr)


  12. #12
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    Limit

    Jo Gaert, so mach ich es auch bis jetzt schon.

    Nur wird halt vor der "limitierten" Abfrage noch einmal
    "ganz München" abgefragt, damit ich die Gesamtzahl der
    Daten habe um die Anzahl der Seite zu berechnen.

    Klar kann ich die Gesamtzahl auch nur einmal abfragen
    und solange diese Variable einfach nur benutzen.

    Torsten.E

  13. #13
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Alles klar ...

    Kleiner Tip:
    Schonmal was von count() gehört?

    PHP-Code:
    $query "SELECT count(*) as total FROM xyz WHERE city = 'Muenchen'";
    ...
    $page $_GET['page'];
    $query "SELECT * FROM xyz WHERE city = 'Muenchen' LIMIT ". ($page-1) * 15 .  ",15"
    ... 
    Gruß,

    Gaert


  14. #14
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    Mal ein Bier an Gaert

    für die kleinen Tips, die das Leben leichter machen.

    Kastenbier = "SELECT count(*) as total FROM keller WHERE inhalt="weizen";


    Torsten.E

  15. #15
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Aah... da kann jemand Gedanken lesen!


Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •