Datenbankabfrage gibt Fehlermeldung

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

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

    Comment


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

      Comment


      • #4
        Originally posted by Miranda View Post
        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

        Originally posted by Miranda View Post
        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

        Comment


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

          Comment


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

            Comment


            • #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.
              Last edited by Miranda; 07-04-2013, 20:03.

              Comment


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

                Comment


                • #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()); 
                  Last edited by Miranda; 07-04-2013, 20:45.

                  Comment


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

                    Comment


                    • #11
                      Originally posted by Miranda View Post
                      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

                      Comment


                      • #12

                        Comment

                        Working...
                        X