Ankündigung

Einklappen
Keine Ankündigung bisher.

WHERE Falsche Abfrage? Kein MySQL Fehler

Einklappen

Neue Werbung 2019

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

  • WHERE Falsche Abfrage? Kein MySQL Fehler

    $query = "SELECT * FROM `daten` WHERE anbieteron=1 AND category LIKE '$category' AND Mitglieder >= $Mitglieder AND besteht <= $besteht ORDER BY `pnummer` DESC";

    Die Variablen werden mit Hilfe eines Formulars gef�llt jedoch werden nicht alle WHERE Angaben beachtet, was mache ich falsch?
    2te Frage: Wie kann ich mehrere Kategorien auslesen?

    Danke f�r all eure Antworten


  • #2
    Deine Query besteht aus einer Zeichenkette. In deiner Zeichenkette

    "SELECT * FROM `daten` WHERE anbieteron=1 AND category LIKE '$category' AND Mitglieder >= $Mitglieder AND besteht <= $besteht ORDER BY `pnummer` DESC";

    sucht die Abfrage tatsächlich in der Tabelle daten in der Spalte category nach
    '$category'. Du musst die Zeichenkette folgendermaßen zusammensetzen:


    "SELECT * FROM `daten` WHERE anbieteron=1 AND category LIKE '" . $category . "' AND Mitglieder >= " . $Mitglieder . " AND besteht <= " . $besteht . " ORDER BY `pnummer` DESC";

    Achte bei Feldern in der Tabelle die vom Typ keine Zahlenwert sind darauf, dass du bei der Abfrage die einzelnen Hochkommata verwendest ' '.

    Mehrere Kategorien müsstest du über eine OR-Verknüpfung verbinden.
    GRuß
    reimondo

    Kommentar


    • #3
      <?php
      srand ((double)microtime()*1000000);
      $zufallb= rand(1,91);
      $zufallszahl= rand(1,15);
      $zufallszahl2= rand(16,31);
      $zufallszahl3= rand(32,47);
      $zufallszahl4= rand(48,63);
      $zufallszahl5= rand(64,79);
      $zufallszahl6= rand(80,91);
      ?>
      <?php

      include("inc_header.php");

      $query_handle_news = mysql_query
      ("SELECT * from Anbieter WHERE pid=$zufallb AND banneron=1", $db_handle);
      $p1 = mysql_fetch_array($query_handle_news);
      $query_handle_news = mysql_query
      ("SELECT * from Anbieter WHERE pid=$zufallszahl2 AND partnerlinkon=1", $db_handle);
      $p2 = mysql_fetch_array($query_handle_news);
      $query_handle_news = mysql_query
      ("SELECT * from Anbieter WHERE pid=$zufallszahl3 AND partnerlinkon=1", $db_handle);
      $p3 = mysql_fetch_array($query_handle_news);
      $query_handle_news = mysql_query
      ("SELECT * from Anbieter WHERE pid=$zufallszahl4 AND partnerlinkon=1", $db_handle);
      $p4 = mysql_fetch_array($query_handle_news);
      $query_handle_news = mysql_query
      ("SELECT * from Anbieter WHERE pid=$zufallszahl5 AND partnerlinkon=1", $db_handle);
      $p5 = mysql_fetch_array($query_handle_news);
      $query_handle_news = mysql_query
      ("SELECT * from Anbieter WHERE pid=$zufallszahl6 AND partnerlinkon=1", $db_handle);
      $p6 = mysql_fetch_array($query_handle_news);
      ?>

      Wo liegt der Fehler es wird partnerlinkon=1 Abfrage und banneron=1 anscheinend nicht beachtet der Rest funktioniert, wie kombiniert man mehrere WHERE Angaben Syntax Gerecht?

      DANKE

      Kommentar


      • #4
        Wie äußert sich der Fehler genau?
        Gibt es zu jeder pid garantiert einen Datensatz mit partnerlinkon=1 ?
        Spielt die Aufteilung in $p1 bis $p5 wirklich eine Rolle oder können die Abfragen auch zusammengefasst werden?

        Kommentar


        • #5
          Die Aufteilung könnte auch Zusammengefasst werden, es darf nur keine Zahl doppelt vorkommen und die Abfrage soll nur Datensätze auslesen die Partnerlinkon=1 sind.

          Danke für jede Hilfe

          Kommentar


          • #6
            PHP-Code:
            <?php
            $handle 
            mysql_query("...") or die(mysql_error());
            ?>
            Häng mysql_error() an und schau ob es dann fehler gibt..

            Kommentar


            • #7
              Es werden keine Fehler angezeigt, jedoch wird die erwünschte WHERE Abfrage noch immer nicht beachtet! Was kann ich nur tun?

              Kommentar


              • #8
                Ich habe die Abfrage geändert jetzt erscheint ein MySQL Fehler

                Parse error: parse error, unexpected T_LNUMBER in
                /www/htdocs/x/x/zufall.php on line 14

                <?php
                srand ((double)microtime()*1000000);
                $zufallb= rand(1,91);
                $zufallszahl= rand(1,15);
                $zufallszahl2= rand(16,31);
                $zufallszahl3= rand(32,47);
                $zufallszahl4= rand(48,63);
                $zufallszahl5= rand(64,79);
                $zufallszahl6= rand(80,91);
                ?>
                <?php
                include("inc_header.php");
                $query_handle_news = mysql_query
                ("SELECT * from Anbieter WHERE banneron = "1" AND pid="$zufallb", $db_handle);
                $p1 = mysql_fetch_array($query_handle_news);
                $query_handle_news = mysql_query
                ("SELECT * from Anbieter WHERE partnerlinkon = "1" AND pid="$zufallszahl2", $db_handle);
                $p2 = mysql_fetch_array($query_handle_news);
                $query_handle_news = mysql_query
                ("SELECT * from Anbieter WHERE partnerlinkon = "1" AND pid="$zufallszahl3", $db_handle);
                $p3 = mysql_fetch_array($query_handle_news);
                $query_handle_news = mysql_query
                ("SELECT * from Anbieter WHERE partnerlinkon = "1" AND pid="$zufallszahl4", $db_handle);
                $p4 = mysql_fetch_array($query_handle_news);
                $query_handle_news = mysql_query
                ("SELECT * from Anbieter WHERE partnerlinkon = "1" AND pid="$zufallszahl5", $db_handle);
                $p5 = mysql_fetch_array($query_handle_news);
                $query_handle_news = mysql_query
                ("SELECT * from Anbieter WHERE partnerlinkon = "1" AND pid="$zufallszahl6", $db_handle);
                $p6 = mysql_fetch_array($query_handle_news);
                mysql_error()
                ?>
                Dicke Zeile ist Nummer 14

                Kommentar


                • #9
                  Beachte: Innerhalb der "SELECT... -Anweisung"
                  sind keine "Anführungzzeichen" sondern 'Hochkommas' zu setzen!

                  zB so:
                  Code:
                  $query_handle_news = mysql_query
                  ("SELECT * from Anbieter WHERE banneron = '1' AND pid='$zufallb', $db_handle) OR DIE(mysql_error());
                  ~dilemma~

                  Kommentar


                  • #10
                    Ein kleiner Tipp um mit deinen Querys zurechtzukommen: Schreib es mal so:
                    PHP-Code:
                    <?php
                    $query 
                    mysql_query("SELECT
                                                                  spalte1, spalte2
                                                       FROM
                                                                  Anbieter
                                                       WHERE
                                                                  banneron = '1' AND
                                                                  pid = '
                    $zufallb'
                                                        "
                    $dbhandle); or die( mysql_error() );
                    ?>
                    @Dilemma
                    ("SELECT * from Anbieter WHERE banneron = '1' AND pid='$zufallb'", $db_handle) OR DIE(mysql_error());
                    Du hast die " vergessen

                    16.14. Warum soll ich nicht SELECT * schreiben?
                    http://www.php-faq.de/q/q-sql-select.html

                    Falls was nicht mit der WHERE Bedingung stimmt, dann lass dir doch einfach einmal deine relevanten Variablen per echo ausgeben und schau, ob in denen auch drinsteht was du möchtest.

                    Kommentar


                    • #11
                      Zitat von reimondo
                      Deine Query besteht aus einer Zeichenkette. In deiner Zeichenkette

                      "SELECT * FROM `daten` WHERE anbieteron=1 AND category LIKE '$category' AND Mitglieder >= $Mitglieder AND besteht <= $besteht ORDER BY `pnummer` DESC";

                      sucht die Abfrage tatsächlich in der Tabelle daten in der Spalte category nach
                      '$category'. Du musst die Zeichenkette folgendermaßen zusammensetzen:

                      "SELECT * FROM `daten` WHERE anbieteron=1 AND category LIKE '" . $category . "' AND Mitglieder >= " . $Mitglieder . " AND besteht <= " . $besteht . " ORDER BY `pnummer` DESC";
                      Was erzählst Du denn da für komische Sachen?
                      Kennst Du den Unterschied zwischen Zeichenketten in " " und Zeichenketten in ' ' ?
                      Wenn nicht, dann lies Dir nochmal die Grundlagenkapitel zu Zeichenketten durch.
                      Deine Variante ist identisch mit der ursprünlichen.
                      **********************************
                      Nein, ich bin nicht die Signatur.
                      Ich putze hier nur.
                      **********************************

                      Kommentar

                      Lädt...
                      X