[MySQL 3.23.X] Ablaufsteuerungsfunktionen unkorrekt

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [MySQL 3.23.X] Ablaufsteuerungsfunktionen unkorrekt

    Hallo,

    benutze folgende Abrage um festzustellen ob ein Wert in einer bestimmte Spalte schon vorhanden ist.

    Code:
    $sql = "SELECT
    		IF (title = '" . $title . "',
    		1,
    		0) AS bln
    	FROM
    		" . $this->table;
    Doch leider ist das Resultat meistens Falsch. Obwohl schon einen Eintrag mit denselben Wert vorhanden ist, erhalte ich meistens 0 als Resultat. Erst wenn der Wert doppelt oder dreifach vorhanden ist wird 1 zurückgegeben. Habe ich was übersehen?

    cheers
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
    PHP Sicherheit
    PHPUnit[1-2]
    Professionelle Softwareentwicklung mit PHP 5
    Professionelle PHP 5-Programmierung

  • #2
    keine Ahnung aber warum nicht einfach:
    PHP Code:
    $sql "select title from ".$this->table." where title='".$title."'"
    ist schneller als ein control flow function Aufruf

    Comment


    • #3
      Re: [MySQL 3.23.X] Ablaufsteuerungsfunktionen unkorrekt

      PHP Code:
      $sql 'SELECT title FROM ttable WHERE title = "'.$title.'"'
      dann mit numRows checken, ähm mysql_num_rows heißts wohl.
      EDIT:
      ey, nicht abschreiben
      Die Zeit hat ihre Kinder längst gefressen

      Comment


      • #4
        Original geschrieben von asp2php
        aber warum nicht einfach:
        PHP Code:
        $sql "select title from ".$this->table." where title='".$title."'"
        Dachte wenn es schon die Möglichkeit gibt, dann nutze sie.
        Original geschrieben von asp2php
        ist schneller als ein control flow function Aufruf
        Na dann. Danke nochmals.

        cheers
        Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
        PHP Sicherheit
        PHPUnit[1-2]
        Professionelle Softwareentwicklung mit PHP 5
        Professionelle PHP 5-Programmierung

        Comment


        • #5
          @derHund: Weil es ja auch extrem Sinnvoll ist erstmal 70.000 Datensätze zu übertragen, bevor man dann mit mysql_num_rows() ermittelt wieviele es sind ...

          ... allerdings habe ich hier im Forum auch schon mal folgenden noch viel dämlicheren Ansatz gefunden ...
          PHP Code:
          $anzahl 0;
          $res mysql_query('SELECT title FROM ttable WHERE title = "'.$title.'"') or die(mysql_error());
          while ( 
          mysql_fetch_array($res) ) {
             
          $anzahl $anzahl 1;

          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Comment


          • #6
            Original geschrieben von schlimmerfinger
            Dachte wenn es schon die Möglichkeit gibt, dann nutze sie.Na dann.
            Ja aber, sie sind z.B. meist bei Zählungen oder komplexeren Abfragen gedacht, für deine Anforderung ist aber echt mit Kanonnen auf Spatzen schiessen.

            Comment


            • #7
              Original geschrieben von goth
              @derHund: Weil es ja auch extrem Sinnvoll ist erstmal 70.000 Datensätze zu übertragen, bevor man dann mit mysql_num_rows() ermittelt wieviele es sind ...

              ... allerdings habe ich hier im Forum auch schon mal folgenden noch viel dämlicheren Ansatz gefunden ...
              PHP Code:
              $anzahl 0;
              $res mysql_query('SELECT title FROM ttable WHERE title = "'.$title.'"') or die(mysql_error());
              while ( 
              mysql_fetch_array($res) ) {
                 
              $anzahl $anzahl 1;

              Ich wollte sowie so mit der Funtktion COUNT arbeiten.
              PHP Code:
              $sql "SELECT
                      COUNT(title) AS num
                  FROM
                      " 
              $this->table "
                  WHERE
                      title = '" 
              $title "'"
              cheers
              Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
              PHP Sicherheit
              PHPUnit[1-2]
              Professionelle Softwareentwicklung mit PHP 5
              Professionelle PHP 5-Programmierung

              Comment


              • #8
                Original geschrieben von goth
                @derHund: Weil es ja auch extrem Sinnvoll ist erstmal 70.000 Datensätze zu übertragen, bevor man dann mit mysql_num_rows() ermittelt wieviele es sind ...

                ... allerdings habe ich hier im Forum auch schon mal folgenden noch viel dämlicheren Ansatz gefunden ...
                PHP Code:
                $anzahl 0;
                $res mysql_query('SELECT title FROM ttable WHERE title = "'.$title.'"') or die(mysql_error());
                while ( 
                mysql_fetch_array($res) ) {
                   
                $anzahl $anzahl 1;

                dann vielleicht mit:
                PHP Code:
                for ($i=0;$i<=$anzahl;$i++) {
                    ..... 
                mysql_fetch_object(...)
                    .....
                    } 
                fortsetzen

                Comment


                • #9
                  Was auch am sinnvollsten ist ... !
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Comment


                  • #10
                    @derHund: Weil es ja auch extrem Sinnvoll ist erstmal 70.000 Datensätze zu übertragen,[...]
                    OffTopic:
                    ich werd alt :dontcare:
                    Die Zeit hat ihre Kinder längst gefressen

                    Comment

                    Working...
                    X