Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wann CASTE ich?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Wann CASTE ich?

    PHP-Code:
    <?php
    /* Datensatzabfrage ob Datensatz vorhanden
     * Fragt Nickname && EMail-Adresse ab
     */
    if($QryResult $mysql->query("SELECT NickName FROM db_users WHERE NickName = '".$inputNick."'
                                                                 OR    EMail    = '"
    .$inputEmail."'"))
    {
        
    /* Speichert die Anzahl der Datensätze in $DatenSatzAnzahl
         * (int) $DatenSatzAnzahl 
         */
        
    (int) $DatenSatzAnzahl $QryResult->num_rows;
        if(
    $DatenSatzAnzahl 0
        {
            
    //...abspeichern
        
    }
        else
        {
            echo 
    "Nickname oder EMail-Adresse bereits vorhanden!";
        }
    }
    ?>
    Hier habe ich festgelegt, dass $DatenSatzAnzahl ein Integer sein soll.
    Macht es an solchen Stellen Sinn?

    Wann Caste ich?

    EDIT: SQL-Injection habe ich beachtet.. Jedoch nicht in dem Codebeispiel...

  • #2
    Nö da hast Du nichts festgelegt. Der Typ einer Variablen ergibt sich aus dem Inhalt. Wenn Du sicherstellen willst, dass $DatenSatzAnzahl eine Zahl sein soll, dann musst Du bei der Zuweisung den zugewiesenen Inhalt casten, nicht die Variable, der zugewiesen wird.

    Gruß Jens

    Kommentar


    • #3
      Jo und hier macht es in meinen Augen wenig sinn, da das sowieso vom DB Server zurückkommt

      Kommentar


      • #4
        Zitat von ragtek Beitrag anzeigen
        Jo und hier macht es in meinen Augen wenig sinn, da das sowieso vom DB Server zurückkommt
        Wäre aber nichts negatives?

        PHP-Code:
        <?php
        /* Datensatzabfrage ob Datensatz vorhanden
         * Fragt Nickname && EMail-Adresse ab
         */
        if($QryResult $mysql->query("SELECT NickName FROM db_users WHERE NickName = '".$inputNick."'
                                                                        OR    EMail = '"
        .$inputEmail."'"))
        {
            
        /* Speichert die Anzahl der Datensätze in $DatenSatzAnzahl
             * (int) $DatenSatzAnzahl 
             */
            
        $DatenSatzAnzahl = (int) $QryResult->num_rows;
            if(
        $DatenSatzAnzahl 0
            {
                
        //...abspeichern
            
        }
            else
            {
                echo 
        "Nickname oder EMail-Adresse bereits vorhanden!";
            }
        }
        ?>
        Macht das ganze Skript so Sinn um Abzufragen ob ein Datensatz bereits vorhanden ist? Mir fällt nichts anderes ein..

        Kommentar


        • #5
          Ich würde das direkt im SQL Statement mit Count() machen, ist aber im großen und ganzen auch bei deiner Variante so nichts einzuwenden!

          Wolf29
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            Ist aber IMHO unnötig, da sowieso ein Integer zurückgegeben wird.....
            PHP: mysql_num_rows - Manual

            Vlt bin ich aber auch der einzige faule Hund unter all den Entwicklern, genauso wie zB bei Interfaces
            http://ragtek.org/blog/rumprogrammie...-sichtbarkeit/

            Kommentar


            • #7
              Wenn ich mir das Beispiel so anschaue, dann ist mein erster Gedanke UNIQUE-Constraint...

              Gruß Jens

              Kommentar


              • #8
                ist das ein tipp fehler?

                PHP-Code:
                 if($DatenSatzAnzahl 0
                    {
                        
                //...abspeichern
                    

                btw. mysql_query liefert dir bei einem SELECT das ergebnis zurück ODER ein false. dann bruacht man doch nicht zu prüfen ob da jetzt mehr als eine zeile zurück kommt. wenn man weis dass bei keinem ergebnis ein false zurück kommt kann man doch direkt mit dem ergebnis der query arbeiten, ohne num_rows() etc zu verwenden
                apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                Kommentar


                • #9
                  Mysql_query gibt nur bei einen Mysql Fehler Falsch zurück.

                  Kommentar


                  • #10
                    ach mist , habe das hinter dem FALSE in der manual nicht gelesen mein fehler..
                    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                    Kommentar


                    • #11
                      Zitat von Jens Clasen Beitrag anzeigen
                      Wenn ich mir das Beispiel so anschaue, dann ist mein erster Gedanke UNIQUE-Constraint...

                      Gruß Jens
                      Das heist? oO Noch nie was von gehört. Glaub ich

                      Kommentar


                      • #12
                        Constraints

                        siehe punkt 5.4.3 (ps: UNIQUE-Constraint in google und zweites treffer angeklickt)
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                        Kommentar


                        • #13
                          Ja toll, wenn ich in eine Zeile Daten eintrage die UNIQUE ist und die Daten schon vorhanden sind und ich das nicht prüfe, dann schmeißt MYSQL mir doch ein Fehler oder nicht?

                          Kommentar


                          • #14
                            Zitat von Jens P. Beitrag anzeigen
                            Ja toll, wenn ich in eine Zeile Daten eintrage die UNIQUE ist und die Daten schon vorhanden sind und ich das nicht prüfe, dann schmeißt MYSQL mir doch ein Fehler oder nicht?

                            probier aus
                            apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                            Kommentar


                            • #15
                              Richtig, deshalb prüfst du es ja oO

                              Kommentar

                              Lädt...
                              X