Select Abfrage funktioniert nicht mit PHP Variable

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

  • 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

    Kommentar


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

      Kommentar


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

        Kommentar


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

          Kommentar


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

            Kommentar


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

              Kommentar


              • #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."%'"

                Kommentar


                • #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.
                  Zuletzt geändert von Griecherus; 14.02.2007, 14:22.
                  Nieder mit der Camel Case-Konvention

                  Kommentar


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

                    Kommentar


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

                      Kommentar


                      • #12
                        Hallo Nix,

                        wolltest die Fehlermeldung wissen:

                        DB ERROR:Syntax error

                        Kommentar


                        • #13
                          immer noch?

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

                          Kommentar


                          • #14
                            Sorry

                            Kommentar


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

                              Kommentar

                              Lädt...
                              X