Beiträge von cottton

    Da Fu** !
    Sorry aber ich hab mir grad nen Ast gelacht ;D

    Prepared Statements - Persistente Verbindungen -> der Hammer!
    Anstatt bei jedem Seitenaufruf erneut die Verbindung zur db herzustellen, wird´s gecached.

    In Zahlen:
    ohne Persistente Verbindungen

    Zitat


    localhost: 1,11 sec
    SQL: 0.0254 sec
    Queries: 5


    mit Persistente Verbindungen

    Zitat


    localhost: 0,19 sec
    SQL: 0.0932 sec
    Queries: 5


    localhost ist die Dauer für das gesammte Script.

    :D Sehr sehr nice!

    Bei mir aufm Rechener ist: PHP Version 5.4.7
    Hatte xampp extra neuinstalliert usw ...
    Auf unserem webserver hab ichs noch nicht probiert.

    Die Prepared Statements funktionieren. Tut alles, was es soll.
    Allerdings nur soweit, wie man es auf php.net als "nicht Pro" verteht ;D
    Daher dachte ich ein HowTo wäre ganz nett =)

    zB ist mir noch nicht klar, was bei folgendem eigtl wirklich passiert:

    PHP
    $stmt->execute(array($ID))

    execute() führt SQL aus,
    aber wozu wird ein array in
    execute(array($ID))
    genutzt?
    Hatte getestet, ob man da mehrere IDs auf einmal abfragen kann. Ohne Erfolg.

    Zitat

    Was hast du denn damit vor? Oder einfach nur für das Verständnis?


    Ich möchte es in Zukunft nutzen, da SQL-injection dann ja nicht mehr möglich ist.
    Schneller soll es auch sein, wobei es bei sich standig ändernden Statements/Querys eher langsamer scheint.


    EDIT:
    Bin schon mal nen Schritt weiter gekommen.
    db connecten und im Fehlerfall error in var packen:

    PHP
    // connect to the db
        try{
            $dbh = new PDO('mysql:host='.MYSQL_HOST.';dbname='.MYSQL_DATENBANK, MYSQL_BENUTZER, MYSQL_KENNWORT);
        }catch(PDOException $e){
            $error = 'Error: '.$e->getMessage();
        }


    EDIT 2:
    gar nicht so einfach das alles auf anhieb zu verstehen. Aber hier ein bsp:

    Ich hab auch versucht den (zB) table zu binden (bindParam), habs aber nicht zum laufen gebracht:

    PHP
    try{
            $user=1;
            $stmt = $dbh->prepare("SELECT user, pw, dies, das FROM :table WHERE id = :value");
            $stmt->execute(array('value' => trim($user), 'table' => 'table_name'));
            if($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                echo "<pre>";print_r($row);echo"</pre>";
            }
        }catch(PDOException $e){
            $error = 'Error: '.$e->getMessage();
        }


    Scheint nur für die values, also nach WHERE zu benutzen zu sein =/
    Jemand ne idee, wie man den table und evtl sogar alles in der query zu binden?


    btw - im falle eines error wie zB falscher table name ect bekomme ich auch keinen error zurück =/

    Ist doch richtig, was du machen willst.

    echo ' text ... ' . $var . $var2 . $var3 . ' text ... ';

    Nur falls du text zwischen den var haben willst, dann musst du das echo wieder aufmachen.
    Also

    echo ' text ' . $var . ' text ' . $var2 . ' text' ;

    Evtl hattes du alles richtig und nur ein ' (einfaches Anführungszeichen) mit einem " (doppeltem Anf.) verwechselt.


    EDIT:
    Du hattest "nur" ein ' vergessen ()siehe anhang)
    Mit einem Editor, der dir den code farbig anzeigt wird dir das bestimmt nicht passieren =)
    Im ersten bild siehst du, das die befehle danach zB blau sind. Das sagte mir, dass da was fehlen muss =)

    "das heist der kleinste ist immer der 5te eintrag?"
    Ja.

    Deine Query funtioniert, allerdings nicht so wie ich es mir gedacht hab =/

    Ich möchte ja von den 5 Einträgen, die ich über LIMIT raus bekomme, den kleinsten auswählen.


    Es soll dann auch noch mehr passieren. Ich poste es mal, falls es eine komplett andere Möglichkeit gäbe:

    In Text: Berechne den Durchschnitt von Spalte "accspm", aber lasse die oberen und unteren 5% der Anzahl der Spieler weg.

    Hoffe es ist irgentwie verständlich ;D

    Ich versuche seit einiger Zeit alles das, was ich bisher in PHP berechnen lassen habe, in SQL eredigen zu lassen.
    Erscheint mir sinnvoll, da ich nicht alle Werte in die Vars packen muss ect.

    Allerdings bekomme ich die Verschachtelungen nicht hin.
    Momentan versuche ich folgendes:

    SQL
    SELECT accspm AS results FROM players ORDER BY accspm DESC LIMIT 0,5 -- colum "accspm" absteigend sortiert und limit auf 5 Einträge


    Aus dieser Anweisung bekomme ich ja nun 5 Einträge.
    Von diesen 5 möchte ich nun den kleinsten Wert.
    Den kleinsten Wert bekomme ich aus dem gesammten Table per:

    SQL
    SELECT MIN(accspm) FROM players

    Ich versuche aber nun die beiden Querys in einer zu schreiben.
    Versucht hab ich:

    SQL
    SELECT MIN(accspm) AS result FROM (
    	(SELECT accspm AS array FROM players ORDER BY accspm DESC LIMIT 0,5)
    )


    und

    SQL
    SELECT MIN(
    (SELECT accspm AS array FROM players ORDER BY accspm DESC LIMIT 0,5)
    ) 
    AS result FROM players


    und einige Andere, die aber gar keinen Sinn ergaben.

    Ist es überhaupt möglich? Oder muss ich das doch über PHP machen?


    Und bitte schreib in ganzen Sätzen...mit deiner Kurzschreibweise kann ich als Anfänger nix anfangen.


    Sorry =)

    Was ich meinte ist "Plus-Gleich".
    Deine Zeile:

    PHP
    echo "Das Ergebnis lautet" . " " . $a + $b;

    Warum dies kein Fehler gibt, muss dir jemand anderes sagen. Ich hätte einen Fehler erwartet.

    Wenn du beim echo die Variabeln anhängen möchtest und dabei gleich addieren möchtest, dann brauchst du:

    PHP
    echo "Das Ergebnis lautet" . " " . $a += $b;
    Zitat

    +=

    PHP
    $a += $b;
    // ist das gleiche wie
    $a = $a + $b;
    // nur kürzer

    Wenn ich mir was wünschen darf für nächstes Jahr: Prepared Statements
    http://php.net/manual/de/pdo.prepared-statements.php

    versuche das Ganze gerade zu verstehen, bin da aber momentan noch am "Humpeln" =)


    EDIT: was ich soweit "habe":

    Aber ich weiss immer gern was "es" macht, wenn ich was einfüge.
    In dem fall weiss ich gar nix und daher ... =)
    Im anderen fall weiss ich, dass es (wie es schon bei den comments steht) prüft, ob font vorhanden, andern falls "font liegt dort" ... =)

    Also PW in datei sichern - mMn ja.
    Aber hochladen - never ever,

    Ich könnt nicht damit leben, dass jemand auch nur die chance hat meine PWs zu bekommen.

    Mach es dir einfach. Nimm ~5 verschiedene PW im netz.
    Ich nutze mehr als 5 auf allen möglichen seiten. Wenn ich also mal einen login nicht mehr weiss, kann es nur eines von denen sein.

    Die PWs sind natürlich sicher wie zb: NbuifO893*Ö

    Wenn du die öfter geschrieben hast, dann ist es wie mit deiner bank pin - du hast es drin.

    ganz simples laden von einer txt mit einer white list usw von einem minecraft gameserver.

    also txt laden, inhalt im admin bereich zum edit anzeigen und bei änderung speichern/hochladen.

    falls jemand braucht (oder fehler/verbesserung hat =) hier die functions: