Select Abfrage funktioniert nicht mit PHP Variable

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

  • Select Abfrage funktioniert nicht mit PHP Variable

    Hallo,

    ich verzweifle langsam, nach Stunden googlen, weiss ich mir auch keinen Rat mehr.....vielleicht kann mir jemand helfen ??

    Ich möchte im SELECT den Spaltennamen mit einer PHP Variablen definieren und erhalte entweder DB ERROR:SYNTAX FEHLER, oder eine leere weisse Seite. Geprüft ob die Variable einen Wert hat habe ich. Auch div. Schreibweisen wie z.B.:
    ".$irgendwas.", '. $irgendwas.', '$irgendwas'....habe ich schon ausgetestet, aber nix zu machen.

    Sinn der Sache ich möchte durch Checkboxen die zu dursuchenden Spalten per Variable dem SELECT einfügen.

    Hier der Auszug des Quellcodes:


    PHP-Quellcode:

    <?php
    $suchbegriffa = $_POST['suchbegriffa'];
    $suchbegriffb = $_POST['suchbegriffb'];
    include("connect.php");
    if ($suchbegriffa){
    $sql = "SELECT DISTINCT *
    FROM `artikel`
    WHERE MATCH (
    `Titel_Englisch` , `Titel_Original` , `Autor` , `Adresse` , `Quelle` , `ISSN/ISBN` , `Jahr` , `Sprache` , `Land` , `Zusammenfassung` , `MJME` , `MIME` , `Kopie wo` , `Bemerkung` , `Erstelldatum` , `geaendert`
    )
    AGAINST (
    '$suchbegriffa'
    IN BOOLEAN
    MODE
    )";

    }
    else{
    $Titel_Englisch=($_POST['auto'][0]);
    $Titel_Original=($_POST['auto'][1]);
    $Autor=($_POST['auto'][2]);
    $Land=($_POST['auto'][3]);
    $Sprache=($_POST['auto'][4]);
    $Zusammenfassung=($_POST['auto'][5]);
    $Quelle=($_POST['auto'][6]);
    $Jahr=($_POST['auto'][7]);
    $ISSN_ISBN=($_POST['auto'][8]);
    $Bemerkung=($_POST['auto'][9]);
    $Kopie_wo=($_POST['auto'][10]);
    if ($suchbegriffb) {
    $sql = "SELECT * FROM artikel WHERE '$Autor' LIKE '%$suchbegriffb%' "; <------ UM DIE STELLE GEHT ES


    }}
    $res = $conn->query($sql);

    if (DB::isError($res)) {
    die($res->getMessage());
    }

    while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) {

    if (DB::isError($row)) {
    die($row->getMessage());
    }
    $huhu=($row->Autor);


    ?>


    Grüsse

    Sunny

  • #2
    PHP Code:
    $sql 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%".$suchbegriffb."%'"
    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Comment


    • #3
      Original geschrieben von Kropff
      PHP Code:
      $sql 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%".$suchbegriffb."%'"
      gruß
      peter
      da is ein kleiner schreibfehler lieber Kropff

      PHP Code:
      $sql "SELECT * FROM artikel WHERE '".$Autor."' LIKE '%".$suchbegriffb."%'"
      Bitte Beachten.
      Foren-Regeln
      Danke

      Comment


      • #4
        Danke. Werde es gleich ausprobieren und dann feedback geben.

        Comment


        • #5
          da is ein kleiner schreibfehler lieber Kropff
          ja bei dir
          PHP Code:
          $Autor 'bla';
            
          $suchbegriffb='blubb';
            
          $sql 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%".$suchbegriffb."%'";
            echo 
          $sql.'<br>';
            
          $sql "SELECT * FROM artikel WHERE '".$Autor."' LIKE '%".$suchbegriffb."%'";
            echo 
          $sql.'<br>'
          Code:
          SELECT * FROM artikel WHERE bla LIKE '%blubb%'
          SELECT * FROM artikel WHERE 'bla' LIKE '%blubb%'
          und jetzt rate mal, welche Variante richtig ist.

          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Comment


          • #6
            Original geschrieben von Kropff
            ja bei dir
            PHP Code:
            $Autor 'bla';
              
            $suchbegriffb='blubb';
              
            $sql 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%".$suchbegriffb."%'";
              echo 
            $sql.'<br>';
              
            $sql "SELECT * FROM artikel WHERE '".$Autor."' LIKE '%".$suchbegriffb."%'";
              echo 
            $sql.'<br>'
            Code:
            SELECT * FROM artikel WHERE bla LIKE '%blubb%'
            SELECT * FROM artikel WHERE 'bla' LIKE '%blubb%'
            und jetzt rate mal, welche Variante richtig ist.

            peter
            ok asche auf mein haupt bei mir gehören natürlich an der WHERE stelle die beiden ' weg.
            Aber eins verstehe ich gerade garnicht.
            Kropff
            PHP Code:
             $Autor 'bla';
              
            $suchbegriffb='blubb';
              
            $sql 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%".$suchbegriffb."%'";
              echo 
            $sql.'<br>';
              
            $sql "SELECT * FROM artikel WHERE ".$Autor." LIKE '%".$suchbegriffb."%'";
              echo 
            $sql.'<br>'
            warum ergibt das so genau die selbe ausgabe?
            Code:
            SELECT * FROM artikel WHERE bla LIKE '%blubb%'
            SELECT * FROM artikel WHERE bla LIKE '%blubb%'
            ach scheis***benkleister jetzt seh ich es ... Ich HASSE diese Notationen ...

            ist ja selbst verständlich.

            $sql = 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%".$suchbegriffb."%'";
            hier dienen die 'einfachen als zeichenketten trenner args ...

            OK jetzt hab ichs geblickt. kommt davon wenn hauptsächlich die Doppelten zum zeichenketten auftrennen nutzt ... man wird betriebsblind

            damit revidiert sich dann meine ausage Kropff seins is natürlich vollkommen richtig ...
            *sich in ecke verkriecht*
            Bitte Beachten.
            Foren-Regeln
            Danke

            Comment


            • #7
              aus dem grund benutze ich prinzipiell keine anführungszeichen mehr. auch wenn ich mehr tippen muss, so finde ich meine fehler schneller. und komme nicht durcheinander.

              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Comment


              • #8
                Original geschrieben von Kropff
                aus dem grund benutze ich prinzipiell keine anführungszeichen mehr. auch wenn ich mehr tippen muss, so finde ich meine fehler schneller. und komme nicht durcheinander.

                hm, und warum hast du dann doppelte- und einfache diesmal gemischt? ist ja noch unschöner:

                PHP Code:
                $sql 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%".$suchbegriffb."%'"

                Comment


                • #9
                  Original geschrieben von 3DMax
                  hm, und warum hast du dann doppelte- und einfache diesmal gemischt? ist ja noch unschöner:
                  Hm, ich schätze damit er die Singlequotes nicht escapen muss, die in den Query-String gehören.
                  Last edited by Griecherus; 14-02-2007, 13:22.
                  Nieder mit der Camel Case-Konvention

                  Comment


                  • #10
                    Original geschrieben von Griecherus
                    Hm, ich schätze damit er die Singlequotes nicht escapen muss, die in den Query-String gehören.
                    stimmt, das ist einzige ausnahme, wenn ich ein hochkomma in einen string packen muss. aber sowas mache ich nicht:
                    PHP Code:
                    $sql 'SELECT * FROM artikel WHERE '.$Autor.' LIKE '."'%$suchbegriffb%'"
                    peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Comment


                    • #11
                      Hallo!
                      $sql = "SELECT * FROM artikel WHERE '$Autor' LIKE '%$suchbegriffb%' ";
                      ist voll in ordnug, mit einer kleiner Ausnahme:
                      entweder `$Autor` oder einfach $Autor schreiben.
                      Die Fehlermeldung von DB wäre natürlich auch interessant
                      Slava
                      bituniverse.com

                      Comment


                      • #12
                        Hallo Nix,

                        wolltest die Fehlermeldung wissen:

                        DB ERROR:Syntax error

                        Comment


                        • #13
                          immer noch?

                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Comment


                          • #14
                            Sorry

                            Comment


                            • #15
                              erst mal bedeutet "nix" nicht unbedingt mein Nikname.
                              1)ich habe ein komischer Gefühl bei der aussage
                              $conn->query(....
                              kann sein, dass du deine query mit falschem Object aufruffen willst?

                              ich schlage vor, du machst deine abfrage mit einfachen befehlen und schreibst statt variablen einfach ein text rein.
                              wenn das funktioniert, dann machst du das selbe mit deinem DB object.

                              wenn auch das funktioniert, dann mach print_r($_POST), da es die letzte problematische stelle ist.
                              Ich weis nicht, ob du informiert bisst, aber es gibt ein bug der bei checkboxen die etwa 'aufto[8]' heisen zur Problemen bei Postübergabe führtf.
                              Slava
                              bituniverse.com

                              Comment

                              Working...
                              X