Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankeintrag per IF

Einklappen

Neue Werbung 2019

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

  • Datenbankeintrag per IF

    Hallo, ich versuche seit einiger Zeit einen Datenbankeintrag via if-Anweisung zu realisieren, aber scheint nicht zu klappen:

    PHP-Code:
    $spieler ABC

    $abfrage 
    "SELECT spieler FROM risiko WHERE spieler LIKE '$spieler' LIMIT 1";
    $ergebnis mysql_query($abfrageSpielerEingetragen);

    if (
    $ergebnis == NOT NULL)
            {
              echo 
    "";
            }
    else
            {
             
    $eintrag "INSERT INTO risiko
                    (spieler)
                VALUES
                    ('
    $spieler')LIMIT 1";
                                    
    $eintragen mysql_query($eintrag);
            } 
    Was mache ich falsch? Er soll ja nur etwas eintragen wenn der User noch nicht drinnensteht. Jedoch soll keine Ausgabe (echo, print_r) erzeugt werden.

    lg. Helix

  • #2
    Bevor du das Problem angehst, steig lieber auf eine andere Verbindungmethode zusammen. Denn mysql ist veraltet

    http://php.net/manual/de/function.mysql-connect.php
    Man beachte den roten Kasten.

    Alternativen sind mysqli oder PDO.

    Was deine Abfrage angeht, naja. Das kann so nicht klappen. Ich weis ehrlich gesagt gar nicht wo ich anfangen soll.

    Vielleicht so: Weist du denn was du dir dort per SELECT versuchst zu holen?

    Kommentar


    • #3
      Verwende INSERT IGNORE oder INSERT INTO ... ON DUPLICATE KEY UPDATE

      Kommentar


      • #4
        aber scheint nicht zu klappen:
        Wem soll diese Fehlerbeschreibung was sagen? Erwartung vs was tatsächlich passiert?

        PHP-Code:
        $spieler ABC 
        Da fehlt ein ';', da fehlen 2 '


        PHP-Code:
        $abfrage "SELECT spieler FROM risiko WHERE spieler LIKE '$spieler' LIMIT 1"
        Finde Like für sowas nicht sehr sinnvoll, versuch lieber nach eindeutigen Kriterien zu selektieren.

        PHP-Code:
        $ergebnis mysql_query($abfrageSpielerEingetragen); 
        Der Query ist in der Variable $abfrage, die Variable $abfrageSpielerEingetragen ist nicht definiert, von daher kannst du nichts finden.

        PHP-Code:
        if ($ergebnis == NOT NULL
        Nein. $ergebnis !== null

        PHP-Code:
                 $eintrag "INSERT INTO risiko 
                        (spieler) 
                    VALUES 
                        ('
        $spieler')LIMIT 1"
        Streich das "LIMIT 1".



        Den Standardtext wegen SQL-Injections spar ich mir einfach mal.
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar


        • #5
          @chiller20000

          Werde es also mit mysqli machen.

          Ich weiss natürlich was ich holen will ^^ Ich will wissen ob der User ABC schon in der DB existiert, wenn nein soll er eingetragen werden.

          @Tropi

          Das muss ich mir nochmal ansehen, kenne ich bisher nicht, aber werde ich gleich mal nachgoogeln.

          Kommentar


          • #6
            @VPh

            PHP-Code:
            $abfrageSpielerEingetragen "SELECT spieler FROM risiko WHERE spieler LIKE '$spieler' LIMIT 1";
            $ergebnisSpielerEingetragen mysql_query($abfrageSpielerEingetragen);

            if ( 
            mysql_num_rows($ergebnisSpielerEingetragen) > 
                {
                    
                }
            else
                {
                    
            $eintrag "INSERT INTO risiko
                        (spieler)
                    VALUES
                        ('
            $spieler')";
                    
            $eintragen mysql_query($eintrag);   
                } 

            Kommentar


            • #7
              Zitat von VPh Beitrag anzeigen

              Finde Like für sowas nicht sehr sinnvoll, versuch lieber nach eindeutigen Kriterien zu selektieren.
              Das solltest du dir zur gemühte führen. Ich finde das nicht nur nicht sehr sinnvoll sonder eher falsch es so zu machen. Gibt sicherlich verschiedene Meinungen aber ich bin der Meinung bei sowas sollte man nach eindeutigkeit gehen und nicht nach ähnlichkeiten.
              Denn sonst sitzt der User ja später stunden dran um sich zu regestrieren.

              Kommentar


              • #8
                $query = "SELECT spieler FROM risiko WHERE spieler = '$spieler' ";

                Hoffe das ist besser =)

                Nebenbei noch auf mysqli umgeschrieben, da es mein erstes mal ist hoffe ich das beste.

                PHP-Code:
                $link mysqli_connect('localhost''root''''risiko');

                $query "SELECT spieler FROM risiko WHERE spieler = '$spieler' ";
                $stmt   mysqli_prepare($link$query);
                mysqli_stmt_execute($stmt);

                if ( 
                $stmt !== NULL 
                    {
                        
                    }
                else
                    {
                        
                $eintrag "INSERT INTO risiko
                            (spieler)
                        VALUES
                            ('
                $spieler')";
                        
                $eintragen mysqli_query($eintrag);   
                    } 

                Kommentar


                • #9
                  Limit 1 ist da überflüsig...

                  Edit: Nachdem du deinen Post nacheditiert hast...

                  Was erwartest du denn bei dieser abfrage? Also geh das mal Schritt für Schritt durch. Was macht mysqli_prepare? Was macht mysqli_stmt_execute?
                  Macht es dann Sinn $stmt auf null zu prüfen?

                  Kommentar


                  • #10
                    mysqli_stmt_execute ? Keine Ahnung Muss wohl dahin laut Tutorial. Gibt True oder False zurück wenn ich richtig gelesen habe.

                    Die Prüfung macht Sinn, will ja Wissen ob in $stmt was drin steht oder nicht.

                    Ich erwarte bei der Abfrage das er mir sagt ob User vorhanden oder nicht.

                    Bin leider nicht so PHP-stark, aber gebe mir alle Mühe =) Mit dem Manual kann ich allerdings nichts anfangen. Das ist zu kompliziert, das habe ich leider schon oft gemerkt. Es hat mir in 2 von 100 Fällen geholfen.

                    Ich erwarte hier auch keine Lösung sondern Hilfe zur Selbsthilfe =)

                    Wie du siehst arbeite ich und schreibe an dem Code auf Eigeninitative ohne Codeteile von euch =)

                    Kommentar


                    • #11
                      Zitat von lordhelix Beitrag anzeigen
                      mysqli_stmt_execute ? Keine Ahnung Muss wohl dahin laut Tutorial. Gibt True oder False zurück wenn ich richtig gelesen habe.
                      Das ist nicht gut. Du solltest schon wissen was du da für eine Funktion benutzt und was diese macht.
                      Das Sie true bzw false zurückgibt, ist klar. Aber dieses Ergebnis muss ja irgendwo herkommen. Also ein true oder false muss ja irgendwie zustande kommen. Und das solltest du wissen, wie diese Ausgabe zustande kommt.

                      Alles andere ist ja gut. Du gibst dir mühe, das sieht man. Du machst bis jetzt auch fortschritte.

                      Deine Abfrage geht ja schon mal in die richtige Richtung. Tipp:

                      mysqli_stmt_num_rows

                      Kommentar


                      • #12
                        Zitat von Tropi Beitrag anzeigen
                        Verwende INSERT IGNORE oder INSERT INTO ... ON DUPLICATE KEY UPDATE
                        Zitat von lordhelix Beitrag anzeigen
                        @Tropi
                        Das muss ich mir nochmal ansehen, kenne ich bisher nicht, aber werde ich gleich mal nachgoogeln.
                        Hast du nicht gemacht, oder?

                        Kommentar


                        • #13
                          @Tropi

                          Doch, habe kurz drüber geschaut, nun kam mir aber der Sandmann dazwischen. Ich hau mich hin und danke euch schonmal sehr. Morgen werde ich mich dann weiter wagen =)

                          Kommentar

                          Lädt...
                          X