Ankündigung

Einklappen
Keine Ankündigung bisher.

nknown column 'Deutschland' in 'where clause'

Einklappen

Neue Werbung 2019

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

  • nknown column 'Deutschland' in 'where clause'

    Habe danach gesucht, doch leider funktioniert es dennoch nicht.
    Ich habe eine Datenbank mit dem Namen staat angelegt.
    Hier drinne ist eine Tabelle mit dem Namen country.
    Code:
    CREATE TABLE `country` (
      `id` int(11) NOT NULL auto_increment,
      `country` varchar(64) collate latin1_german2_ci NOT NULL default '-',
      `country_iso` char(5) collate latin1_german2_ci NOT NULL default '-',
      `country_code` varchar(12) collate latin1_german2_ci NOT NULL default '-',
      PRIMARY KEY  (`id`),
      KEY `country` (`country`),
      KEY `country_iso` (`country_iso`),
      KEY `country_code` (`country_code`)
    );
    
    INSERT INTO `country` (`id`, `country`, `country_iso`, `country_code`) VALUES (1, 'Deutschland', 'DE', '0049'),
    (2, 'Österreich', 'A', '0043'),
    ...
    meine staat.php
    Code:
    <?php
    
    if (!empty($_GET['country'])) {
    
    $link = mysql_connect('localhost', 'country', '3mu7wZ');
    
    if (!$link) {
    die('Verbindung nicht moeglich : ' . mysql_error());
    }
    
    $db_selected = mysql_select_db('country', $link);
    if (!$db_selected) {
    die ('Kann Tabelle nicht benutzen : ' . mysql_error());
    }
    
    $result = mysql_query("SELECT country_code FROM country WHERE country_iso = ".$_GET['country']);
    if (!$result) {
    echo 'Abfrage konnte nicht ausgefuehrt werden: ' . mysql_error();
    exit;
    }
    $row = mysql_fetch_row($result);
    
    echo $row[0];
    
    mysql_close($link);
    
    }
    
    ?>
    Html Ausgabe
    Code:
    <tr>
        <td>  <label>Land:</label><select name="Staat" id="country">
              <option value="Deutschland" selected="selected">Deutschland</option>
    <option value="Österreich">Österreich</option>
    ....
              </select>
      <br /></td></tr>
        <tr>
          <td><label>Landesvorwahl:</label>
       <input type="text" name="Landesvorwahl" id="country_code" value="" size="50"/></td>
         </tr>
    Wenn ich nun Deutschland auswähle bekomme ich die Meldung
    Abfrage konnte nicht ausgefuehrt werden: Unknown column 'Deutschland' in 'where clause'
    Ich komme einfach nicht weiter...
    Kann mir bitte jemand helfen ?

    Gruß
    Realpommes

  • #2
    Dann lass Dir diese Query mal ausgeben. Dann siehst Du den Fehler.
    PHP-Code:
    $result mysql_query("SELECT country_code FROM country WHERE country_iso = ".$_GET['country']); 
    Ausserdem ist das eh Quatsch, weil country_iso nicht Deutschland ist.

    Kommentar


    • #3
      Zitat von nikosch Beitrag anzeigen
      Dann lass Dir diese Query mal ausgeben. Dann siehst Du den Fehler.
      PHP-Code:
      $result mysql_query("SELECT country_code FROM country WHERE country_iso = ".$_GET['country']); 
      Ausserdem ist das eh Quatsch, weil country_iso nicht Deutschland ist.
      Selbe Meldung:
      Unknown column 'Deutschland' in 'where clause'
      Verstehe es einfach nicht.
      Kann es sein, das es mit dem Auswahlfeld nicht funktioniert ?

      Kommentar


      • #4
        Du sollst ihn dir ausgeben lassen, den SQL-Code - nicht den PHP-Code der den SQL-Code erzeugt. Wenn ich sage du sollst vorlesen was du geschrieben hast, gibst du mir ja auch nicht deinen Stift.



        SELECT country_code FROM country WHERE country_iso = Deutschland

        Ist das korrekter SQL-Code? Oder doch so?

        SELECT country_code FROM country WHERE 'country_iso' = Deutschland

        oder so?

        SELECT country_code FROM country WHERE country_iso = 'Deutschland'

        SQL-Injections beachten.

        Kommentar


        • #5
          Zitat von Chriz Beitrag anzeigen
          Du sollst ihn dir ausgeben lassen, den SQL-Code - nicht den PHP-Code der den SQL-Code erzeugt. Wenn ich sage du sollst vorlesen was du geschrieben hast, gibst du mir ja auch nicht deinen Stift.



          SELECT country_code FROM country WHERE country_iso = Deutschland

          Ist das korrekter SQL-Code? Oder doch so?

          SELECT country_code FROM country WHERE 'country_iso' = Deutschland

          oder so?

          SELECT country_code FROM country WHERE country_iso = 'Deutschland'

          SQL-Injections beachten.
          -LOL-

          Verbindung zum Datenbankserver erfolgreichAuswahl der Datenbank fehlgeschlagen, das bei allen Variationen.

          Hab letzte Nacht schon damit verbracht, jetzt ist erstmal Feierabend.
          Ich danke Dir erstmal für Deine Bemühungen.

          Schönen Abend noch

          Kommentar


          • #6
            Oh man, dass die ersten 2 nicht gehen ist klar - Du solltest daraus nur deinen Fehler lernen -rolleyes-

            btt:

            Im MySQL sagst du:
            `country_iso` char(5)
            - heisst, 'contry_iso' darf max. 5 Zeichen haben, jetzt zaehlen wir mal Deutschland:
            D - 1
            E - 2
            U - 3
            T - 4
            S - 5
            C - 6
            H - 7
            L - 8
            A - 9
            N - 10
            D - 11
            .. Sind also so irgendwie 'ca' 6 Zeichen zu viel.
            Ansonsten schau dir den Post von Chriz nochmal an - am besten lies ihn dir noch 5 mal durch, in der Hoffnung du verstehst es.

            Edit: Seh gerade das `country` Deutschland sein sollte, du hast aber `country_iso` in der WHERE-Klause, also entweder ist das nur ein teil vom code, oder du hast ein fehler ..

            Kommentar


            • #7
              Zitat von Mein Nick Beitrag anzeigen
              Oh man, dass die ersten 2 nicht gehen ist klar - Du solltest daraus nur deinen Fehler lernen -rolleyes-

              btt:

              Im MySQL sagst du:
              `country_iso` char(5)
              - heisst, 'contry_iso' darf max. 5 Zeichen haben, jetzt zaehlen wir mal Deutschland:
              D - 1
              E - 2
              U - 3
              T - 4
              S - 5
              C - 6
              H - 7
              L - 8
              A - 9
              N - 10
              D - 11
              .. Sind also so irgendwie 'ca' 6 Zeichen zu viel.
              Ansonsten schau dir den Post von Chriz nochmal an - am besten lies ihn dir noch 5 mal durch, in der Hoffnung du verstehst es.

              Edit: Seh gerade das `country` Deutschland sein sollte, du hast aber `country_iso` in der WHERE-Klause, also entweder ist das nur ein teil vom code, oder du hast ein fehler ..
              Kommt es mir nur so vor oder ist man gereizt?
              Ich bin noch kein Profi so wie Ihr und habe eigentlich gedacht, das man in einem Forum nachfragen kann.

              In der country_iso liegen alle Länderabkürzungen drinne, eine mit 11 kenne ich nicht.
              Das mit dem Query ausgeben hatte ich noch nicht gemacht und wusste in dem Moment auch nicht was gemeint war.
              Auch hierfür -SORRY-, das ich ein PHP-Einsteiger bin und nicht sofort alles weiß.

              Kommentar


              • #8
                Zitat von realpommes Beitrag anzeigen
                Kommt es mir nur so vor oder ist man gereizt?
                Ich bin noch kein Profi so wie Ihr und habe eigentlich gedacht, das man in einem Forum nachfragen kann.
                Tut mir leid, dass ich deine Frage beantworten wollte.

                In der country_iso liegen alle Länderabkürzungen drinne, eine mit 11 kenne ich nicht.
                Deine Mysql Option, die eine WHERE-Klausel hat, ist
                Code:
                mysql_query("SELECT country_code FROM country WHERE country_iso = ".$_GET['country']);
                Darauf kommt (nach deiner Aussage): Abfrage konnte nicht ausgefuehrt werden: Unknown column 'Deutschland' in 'where clause'
                Also scheinst du wohl irgendwie nicht nach Laenderkuerzel zu suchen? Oder, wie ich auch schon sagte, es ist nicht der ganze Code.
                Auch hierfür -SORRY-, das ich ein PHP-Einsteiger bin und nicht sofort alles weiß.
                Kein ding, bin ich auch noch - und waren die anderen auch mal. :>

                Und na ja, in meinem Edit hatte ich ja auch noch was zum Laenderkurzel gesagt & so.. Aber kann man ja getrost ueberlesen.

                Kommentar


                • #9
                  OK lösen wirs auf: Du übergibst Deutschland ohne Anführungszeichen, darum hält MySQL diese Zeichenkette für einen Identifier, in diesem Kontext eben für eine Spalte (wie es die Fehlermeldung ja auch beschreibt).

                  PHP-Code:
                  <?php
                  $sql 
                  sprintf("SELECT country_code FROM country WHERE country_iso = '%s' "mysql_real_escape_string($_GET['country']));
                  $resource mysql_query($sql) or die(mysql_error());
                  ?>
                  Bitte lerne die Grundlagen, wir können nicht bei 0 anfangen dir zu helfen, etwas Eigenkapitel musst du schon mitbringen.
                  Das obige Beispiel sichert dein Query gegen SQL-Injections ab. Zu diesem Thema kannst du dich einlesen oder es bleiben lassen, solange du uns nicht damit behelligst, wenn deine komplette Datenbank gelöscht, übernommen oder manipuliert wurde.

                  Kommentar


                  • #10
                    Zitat von Chriz Beitrag anzeigen
                    OK lösen wirs auf: Du übergibst Deutschland ohne Anführungszeichen, darum hält MySQL diese Zeichenkette für einen Identifier, in diesem Kontext eben für eine Spalte (wie es die Fehlermeldung ja auch beschreibt).

                    PHP-Code:
                    <?php
                    $sql 
                    sprintf("SELECT country_code FROM country WHERE country_iso = '%s' "mysql_real_escape_string($_GET['country']));
                    $resource mysql_query($sql) or die(mysql_error());
                    ?>
                    Bitte lerne die Grundlagen, wir können nicht bei 0 anfangen dir zu helfen, etwas Eigenkapitel musst du schon mitbringen.
                    Das obige Beispiel sichert dein Query gegen SQL-Injections ab. Zu diesem Thema kannst du dich einlesen oder es bleiben lassen, solange du uns nicht damit behelligst, wenn deine komplette Datenbank gelöscht, übernommen oder manipuliert wurde.
                    Danke Dir werde es dann ausprobieren.
                    Ja, ich lese mich da noch genauer rein, stehe noch ziemlich am Anfang.
                    Vielen Dank erstmal.

                    Kommentar


                    • #11
                      Vielen Dank Chriz funktioniert nun einwandfrei, danke dafür.
                      Werde mir Lesestoff organisieren und das ganze vertiefen.
                      Danke auch für den Tip mit der SQL-Injections.
                      Nun kann ich das Land auswählen und die Landesvorwahl erscheint dann auch.
                      Selbiges habe ich mit der PLZ auch gemacht, hier wird dann der Ort danach angezeigt.

                      @Mein Nick
                      Danke dir auch.
                      Sorry wenn das von mir falsch rüber kam, war nicht böse gemeint.


                      VIELEN DANK EUCH ZWEI

                      Kommentar

                      Lädt...
                      X