[MySQL 3.23.X] Ablaufsteuerungsfunktionen unkorrekt

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

  • [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

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #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]

          Kommentar


          • #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.

            Kommentar


            • #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

              Kommentar


              • #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

                Kommentar


                • #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]

                  Kommentar


                  • #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

                    Kommentar

                    Lädt...
                    X