Datenbankabfrage gibt Fehlermeldung

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

  • Datenbankabfrage gibt Fehlermeldung

    Tausendmal gemacht und ich verstehe nicht warum es nun auf einmal zu einer Fehlermeldung kommt.
    Ich stehe scheinbar auf dem Schlauch.

    Folgende Anfrage spuckt die Fehlermeldung aus:
    PHP-Code:
    $neue_id 12;
    $neuer_name 'Test';

    // egal ob ich es so schreibe
    $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id = '."$neue_id".' AND tab_name = '."$neuer_name".'');

    while (
    $ergebnis mysql_fetch_array($anfrage))
    {
    extract($ergebnis);

    echo 
    'Beides in einem Eintrag vorhanden.';
    }


    // oder so schreibe
    $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id = $neue_id AND tab_name = $neuer_name');

    while (
    $ergebnis mysql_fetch_array($anfrage))
    {
    extract($ergebnis);

    echo 
    'Beides in einem Eintrag vorhanden.';

    Die Abfrage nach tab_name = $neuer_name verursacht immer die Fehlermeldung:

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given

    Ich kapiere es nicht.

    Ziel der Abfrage ist es zu prüfen ob die Kombination in dieser Form schon vorhanden ist. Wenn ja, soll es zu einer Fehlermeldung kommen und wenn nein, soll es später in die Datenbank geschrieben werden.

    Wer kann mir bitte meinen Fehler erklären?

  • #2
    Gibt es denn überhaupt eine Verbingung zur Datenbank?

    Kommentar


    • #3
      ja, natürlich

      Ich öffne die DB vor der Abfrage und schließe sie auch wieder danach. Da dies ein logischer Schritt ist, habe ich das im Codeabschnitt weggelassen.

      Wenn ich tab_name = $neuer_name in der Abfrage weglasse, kommt es auch zu keiner Fehlermeldung. Aber das hilft mir ja nicht wirklich weiter.

      Kommentar


      • #4
        Zitat von Miranda Beitrag anzeigen
        ja, natürlich

        Ich öffne die DB vor der Abfrage und schließe sie auch wieder danach. Da dies ein logischer Schritt ist, habe ich das im Codeabschnitt weggelassen.
        War auch nur eine Frage

        Zitat von Miranda Beitrag anzeigen
        Wenn ich tab_name = $neuer_name in der Abfrage weglasse, kommt es auch zu keiner Fehlermeldung. Aber das hilft mir ja nicht wirklich weiter.
        Stimmt. Die Abfrage NUR mit der ID klappt. Ich kriege auch die Abfrage NUR mit dem Namn auch nicht hin

        Kommentar


        • #5
          Und was sagt ein
          PHP-Code:
          $anfrage mysql_query(...) or die (mysql_error()); 
          Ich tippe mal auf so was
          PHP-Code:
          $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id = '.$neue_id.' AND tab_name =\''.$neuer_name.'\''); 
          Sieht bei dir nach einer fehlerhaften Zeichenkettenverknüpfung aus.

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

          Kommentar


          • #6
            Oder so:
            PHP-Code:
            $anfrage "SELECT * FROM `meine_db_tabelle` WHERE `tab_name` = '".$neuer_name."'" 
            Ja. da fehlt noch die ID Abfrage. Aber Peter hat da schon recht gehabt:
            fehlerhafte Zeichenkettenverknüpfung

            Kommentar


            • #7
              PHP-Code:
              $neue_id 12;
              $neuer_name 'Test';

              // egal ob ich es so schreibe
              $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id = '."$neue_id".' AND tab_name = '."$neuer_name".'') OR DIE (mysql_error());

              while (
              $ergebnis mysql_fetch_array($anfrage))
              {
              extract($ergebnis);

              echo 
              'Beides in einem Eintrag vorhanden.';
              }


              // oder ob ich es so schreibe
              $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id =  '.$neue_id.' AND tab_name = '.$neuer_name.'') OR DIE  (mysql_error());

              while (
              $ergebnis mysql_fetch_array($anfrage))
              {
              extract($ergebnis);

              echo 
              'Beides in einem Eintrag vorhanden.';

              Die Fehlermeldung lautet:
              PHP-Code:
              Unknown column 'Test' in 'where clause' 
              Und ich kapiere es immer noch nicht.
              Zuletzt geändert von Miranda; 07.04.2013, 21:03.

              Kommentar


              • #8
                *lach* Ich Dussel

                Ich habs:

                PHP-Code:
                $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id =  ".$neue_id." AND tab_name = ".$neuer_name."') OR DIE  (mysql_error()); 
                Es waren wirklich nur die bl... Anführungszeichen.

                Kommentar


                • #9
                  Ich bekomme jetzt langsam 'ne Kriese.

                  Wieso müssen die Schreibweisen denn jetzt bitteschön in ein und derselben Datei unterschiedlich sein?

                  Kann mir das mal jemand erklären?

                  Bsp.

                  PHP-Code:
                  $anfrage_1 mysql_query('SELECT * FROM db_tabelle_1 ORDER BY tab_id_1 DESC');

                  while (
                  $ergebnis_1 mysql_fetch_array($anfrage_1))
                  {
                     
                  extract($ergebnis_1);

                     
                  $anfrage_2 mysql_query('SELECT * FROM db_tabelle_2 WHERE tab_id_2 = '."$tab_id_1".' ORDER BY pri ASC, name ASC');

                     while (
                  $ergebnis_2 mysql_fetch_array($anfrage_2))
                     {
                          
                  extract($ergebnis_2);
                     }

                  Wenn ich in anfrage_2 schreibe:
                  PHP-Code:
                  ".$tab_id_1." 
                  wird kein Ergebnis ausgegeben.

                  Schreibe ich aber:
                  PHP-Code:
                  '."$tab_id_1".' 
                  bekomme ich das gewünschte Egebnis.

                  WIESO???? Ich kapiere es nicht.

                  Meine Seite lief unter PHP 4 problemlos und nun unter 5.4 scheint alles nur noch Murks zu sein. Grrrr

                  Achso, bevor ich es vergesse:
                  PHP-Code:
                  $anfrage mysql_query(...) or die (mysql_error()); 
                  liefert keine Meldung aus.


                  Ich muss noch mal auf das vorige, eigentlich schon gelöste Problem zurück kommen.
                  Ich war mit meinem Jubel zu voreilig.
                  Ich bekomme zwar keine Fehlermeldungen mehr, dafür wird die Abfrage aber auch nicht mehr ausgeführt.
                  PHP-Code:
                  $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id =  ".$neue_id." AND tab_name = ".$neuer_name."') OR DIE  (mysql_error()); 
                  Zuletzt geändert von Miranda; 07.04.2013, 21:45.

                  Kommentar


                  • #10
                    Das klappt tadellos:
                    PHP-Code:
                    $anfrage "SELECT * FROM `teams` WHERE `team_id` = ".$neue_id." AND `team_name` = '".$neuer_name."'" 
                    Und was soll das:
                    PHP-Code:
                    extract($ergebnis_1); 
                    in der while-schleife?

                    Auserdem ein Tip:
                    http://www.php-resource.de/forum/sql...-backtics.html

                    Damit (kosequent angewendet) sparst du dir in der Zukunft viel Arbeit bei der Fehlersuche

                    Kommentar


                    • #11
                      Zitat von Miranda Beitrag anzeigen
                      Ich bekomme zwar keine Fehlermeldungen mehr, dafür wird die Abfrage aber auch nicht mehr ausgeführt.
                      PHP-Code:
                      $anfrage mysql_query('SELECT * FROM meine_db_tabelle WHERE tab_id =  ".$neue_id." AND tab_name = ".$neuer_name."') OR DIE  (mysql_error()); 
                      wieder die anführungszeichen ;-)

                      bei zahlen kannst du die weglassen, bei zeichenketten NICHT.
                      auch wundert mich wieso du mysql_query('SQL_BEFEHL'); machst, aber im SQL_BEFEHL mit ".$PHP_VAR." versuchst die zeichenkette zu unterbrechen.

                      ich würde dir raten das zu trennen
                      PHP-Code:
                      $sql "
                      SELECT 
                         * 
                      FROM 
                         ... 
                      WHERE
                         user_id = "
                      .$user_id."
                      and
                         user_name = '"
                      .$user_name."'
                      "
                      ;
                      $anfrage mysql_query($sql); 
                      wenn es mal probleme gibt einfach ein echo $sql und kopiere die ausgabe dann in ein phpmyadmin sql-eingabefeld, meist wirst du dann schon fündig woran es liegt.
                      Gruß
                      Uzu

                      private Homepage

                      Kommentar


                      • #12

                        Kommentar

                        Lädt...
                        X