SQL MySQL Datenbank und Tabelle erstellen

ProHackz

Newbie
Registriert
Dez. 2013
Beiträge
1
Ich finde den Fehler einfach nicht. Wenn ich den Code ausführe wird nur die Datenbank verein erstellt aber die Tabelle fehlt völlig. Ich wäre über Hilfe sehr dankbar. :)

PHP:
<html>
<body>
<?php
   $con = mysqli_connect("","root");

   $sql = "CREATE DATABASE IF NOT EXISTS verein";
   mysqli_query($con, $sql);

   mysqli_select_db($con, "verein");

   $sql = "CREATE TABLE IF NOT EXISTS personen (
      id mediumint NOT NULL AUTO_INCREMENT,
      name varchar(30) DEFAULT NULL,
      vorname varchar(25) DEFAULT NULL,
      straße varchar(30) DEFAULT NULL
      hausnummer int(3) DEFAULT NULL,
      plz mediumint(5) NOT NULL,
      ort varchar(10) DEFAULT NULL,
      beitrag tinyint(1) DEFAULT NULL,
      PRIMARY KEY id (id)
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1";
   mysqli_query($con, $sql);
 
   mysqli_close($con);
?>
</body>
</html>
 
Es fehlt ein Komma im SQL-Query bei der Straße.

Code:
    <html>
    <body>
    <?php
    $con = mysqli_connect("","root");
     
    $sql = "CREATE DATABASE IF NOT EXISTS verein";
    mysqli_query($con, $sql);
     
    mysqli_select_db($con, "verein");
     
    $sql = "CREATE TABLE IF NOT EXISTS personen (
    id mediumint NOT NULL AUTO_INCREMENT,
    name varchar(30) DEFAULT NULL,
    vorname varchar(25) DEFAULT NULL,
    straße varchar(30) DEFAULT NULL,
    hausnummer int(3) DEFAULT NULL,
    plz mediumint(5) NOT NULL,
    ort varchar(10) DEFAULT NULL,
    beitrag tinyint(1) DEFAULT NULL,
    PRIMARY KEY id (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1";
    mysqli_query($con, $sql);
    mysqli_close($con);
    ?>
    </body>
    </html>

Und wie schon gesagt lohnt es sich auch immer den Fehler mit ausgeben zu lassen.
 
Der Query wird ja sofort abgeschickt und verarbeitet, dann kannst du für den nächsten auch die selbe Variable (nicht Funktion) nehmen und überschreiben.
 
Klar geht das, die Queries sind doch unabhängig und werden sofort weitergereicht.
 
Du solltest dir auch die Datentypen der einzelnen Spalten anschauen.
Auch solltest du bedenken, dass bei PLZ und einem numerischen Datentyp eine führende 0 bei allen PLZ mit 0xxxx abgeschnitten wird. Hier wäre varchar(5) angebrachter.

Auch sind bei Hausnummern Sonderzeichen nicht unüblich.
 
Noch schlimmer: sobald man mal internationale PLZ hat kommt nprmalerweise ne Länderkennung davor, z.B. D-00815.

Und was Hausnummern angeht: Unpraktisch, die in ein separates Feld zu schreiben. Was machst du mit Gebäuden, die keine Nummer haben, sondern nur eine Straße. Sowas gibts tatsächlich, wenn auch sehr selten.
Viel praktischer ist es, den User einfach "Musterstraße 5c" in ein einzelnes Feld schreiben zu lassen und das auch so zu speichern.
 
Wenn wir gerade schon am rumkritisieren sind, dann möchte ich darauf hinweisen, dass 10 Zeichen für den Ort wohl viel zu knapp bemessen sind. Es dürfte wohl jedem nach spätestens 1min Gedenkzeit eine Stadt mit mehr Zeichen eingefallen sein.
 
Zurück
Oben