Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] if() then else

Einklappen

Neue Werbung 2019

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

  • [Erledigt] if() then else

    Hi, hab gesucht aber bisher nichts richtiges gefunden.

    Ich möchte erst mit einen Select einen Wert abfragen ob er existiert.
    Wenn er existiert soll ein update durchgeführt werden und wenn nicht ein insert.

    Das soll in einer Stored Procedure statt finden, bin aber nicht sicher ob das funktioniert.

  • #2
    Schau Dir mal MySQL :: MySQL 5.0 Reference Manual :: 12.2.5.3 INSERT ... ON DUPLICATE KEY UPDATE Syntax und MySQL :: MySQL 5.0 Reference Manual :: 12.2.7 REPLACE Syntax an

    Kommentar


    • #3
      [edit] zu lahm und nicht uppercased
      REPLACE
      INSERT ON DUPLICATE KEY UPDATE

      Kommentar


      • #4
        Zitat von nikosch Beitrag anzeigen
        [edit] zu lahm
        Aber nur, weil ich das heute schon mal geschrieben habe. Sonst hätte mich search.mysql.com alt aussehen lassen (so eine langsame Sucheseite für die Doku zu einer Datenbank ...kein Kommentar)

        Kommentar


        • #5
          Naja, die Links wüßte ich jetzt auch nicht aus dem Kopf. Deswegen werfe ich nur so Brocken hin. Selber Suchen macht sowieso schlauer …

          Kommentar


          • #6
            Zitat von nikosch
            Selber Suchen macht sowieso schlauer …
            Stimmt. Aber das Risiko mag ich nicht eingehen
            Sonst kommt hier noch eine INSERT...SELECT...LEFT JOIN COALESCE-oder-so-ähnlich-"Lösung" raus

            Kommentar


            • #7
              Super, klappt einwandfrei
              Danke

              Kommentar


              • #8
                Hm wo ich es in PHP benutze gibt es ein Problem
                PHP-Code:
                Warning:  mysql_fetch_assoc(): supplied argument is not a valid MySQL result 
                Was ist denn daran falsch? Bei MySql hatte der Aufruf ja geklappt.
                PHP-Code:
                $sql "call setValue(20, 44, 55, @erg);
                            select @erg as erg"

                  
                $res mysql_query($sql);
                  
                $d mysql_fetch_assoc($res); 
                  echo 
                $d["erg"]; 

                Kommentar


                • #9
                  mysql_connect(), mysql_select_db() und mysql_query() liefern FALSE zurücl, wenn etwas schief gegangen ist. Diesen Rückgabewert immer abtesten, ohne Ausnahme.
                  Im Fehlerfall kann die Meldung per [man]mysql_error[/man]() abgeholt werden.
                  PHP-Code:
                  $mysql mysql_connect('..''..''..') or die(mysql_error());
                  mysql_select_db('..'$mysql) or die(mysql_error());
                  $query "call setValue(20, 44, 55, @erg);
                    select @erg as erg"

                  $result mysql_query($query$mysql)
                    or die(
                  mysql_error()); 

                  Kommentar


                  • #10
                    Zitat von David Beitrag anzeigen
                    mysql_connect(), mysql_select_db() und mysql_query() liefern FALSE zurücl, wenn etwas schief gegangen ist. Diesen Rückgabewert immer abtesten, ohne Ausnahme.
                    Im Fehlerfall kann die Meldung per [man]mysql_error[/man]() abgeholt werden.
                    PHP-Code:
                    $mysql mysql_connect('..''..''..') or die(mysql_error());
                    mysql_select_db('..'$mysql) or die(mysql_error());
                    $query "call setValue(20, 44, 55, @erg);
                      select @erg as erg"

                    $result mysql_query($query$mysql)
                      or die(
                    mysql_error()); 
                    PHP-Code:
                    You have an error in your SQL syntax
                    check the manual that corresponds to your MySQL server version
                    for the right syntax to use near '; select @erg as erg' at line 1 
                    In MySQL ging es noch warum meckert der jetzt rum?

                    Edit: Ok, PHP kann wohl immer nur eine Query ausführen.

                    Mit
                    PHP-Code:
                    $query "call setValue(20, 44, 55, @erg);
                    mysql_query(
                    $query);
                    $query="select @erg as erg";
                    $result = mysql_query($queryl); 
                    gehts

                    Kommentar


                    • #11
                      Vielleicht magst Du Dir auch mysqli bzw pdo anschauen.
                      Da kannst Du Parameter als in/out/inout binden und Dir damit das zusätzliche SELECT sparen.

                      Zitat von http://de.php.net/manual/en/pdostatement.bindparam.php
                      Example #3 Call a stored procedure with an INOUT parameter
                      <?php
                      /* Call a stored procedure with an INOUT parameter */
                      $colour = 'red';
                      $sth = $dbh->prepare('CALL puree_fruit(?)');
                      $sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
                      $sth->execute();
                      print("After pureeing fruit, the colour is: $colour");
                      ?>

                      Kommentar


                      • #12
                        Gibt es auch eine Möglichket mehrere Werte aus einer Stored Procedure rauszukriegen? Finde nur Beispiele mit einen Wert aber niemals mehrere Werte wie zb eine Spalte wie es von einem Select kennt.

                        Kommentar

                        Lädt...
                        X