tabelle in db erstellen??

  • ich will gerade für ein infoprojekt ein forum in php erstellen das problem ist das ich schon am anfang scheiter und zwar hab ich mir nen kostenlosen host zugelegt der auch über eine mysql datenbank verfügt jetzt will ich für das forum per php script eine tabelle in dieser datenbank erstellen und hab dazu folgendes erstellt:
    <?
    $name=$_POST[name];
    $host="localhost";
    $user="******";
    $pw="******";
    $db="********";
    $link=mysql_connect($host,$user,$pw);
    mysql_select_db($db,$link);
    $tabelle="CREATE TABLE $name('text' VARCHAR(30))";
    mysql_query($tabelle,$link);mysql_close($link);?>


    so wenn ich dieses script aufrufe kommt keine fehlermeldung also ging ich davon aus das alles einwandfrei geklappt hat aber wenn ich in myadmin meiner datenbank gehe erscheint keine tabelle aber ich weiß einfach nicht warum was hab ich falsch gemacht????

  • Hallo amras,


    Hast Du dir mal per echo ausgeben lassen was in $tabelle steht, bevor Du es an die DB schickst?
    Ebenso sollten, um Fehler zu vermeiden, Feldnamen immer in Backticks eingeschlossen sein, z.B. `name`, `email`, usw. Sonst kann es passieren das man als Feldname etwas wählt, dass ein reserviertes Schlüsselwort der DB ist.
    Noch ein Tipp: Schlüssel von assoziativen Array immer in Anführungszeichen packen, sonst kann es da auch mal zu Fehler kommen. Z.B.: $_POST["name"]

  • Bei neueren PHP-Versionen steht oft das Error-Reporting-Level zu niedrig.
    setze mal ein

    PHP
    1. error_reporting(E_ALL);

    an den Anfang deines Scripts. Dann sollten auch alle Fehlermeldungen angezeigt werden.

    [FONT="Courier New"]...zur Zeit außer Betrieb...

  • marc22
    Genau das hat Rizzo geschrieben.



    Noch ein Tipp: Schlüssel von assoziativen Array immer in Anführungszeichen packen, sonst kann es da auch mal zu Fehler kommen. Z.B.: $_POST["name"]


    Noch besser ist es, Hochkommas für Indexe zu verwenden. Bei Gänsefüßchen muss der PHP-Parser den Index noch auf zu ersetzende Variableninhalte durchsuchen, was Zeit kostet. Ich habe mir grundsätzlich abgewöhnt Gänsefüßchen bei Stringausdrücken zu verwenden, seit ich einmal in einem Projekt konsequent alle Vorkommen gegen Hochkommas ausgetauscht und einen wirklich spürbaren Performancegewinn hatte.


    Aber zum eigentlichen Problem:

    PHP
    1. mysql_query($tabelle,$link);


    ist unsauber, da Du programmtechnisch gar nicht abfragst, ob es zu einem Fehler kam.
    Tausche das mal aus gegen:

    PHP
    1. mysql_query($tabelle,$link) or die(mysql_error());


    dann erhältst Du schonmal eine Fehlermeldung und hast gleiche eine Funktion kennengelernt, die das letzen MySQL-Fehler verrät. ;)


    Noch besser wäre es, wenn Du Dich als Programmierer um die korrekte Verarbeitung des Fehlers kümmern würdest:

    PHP
    1. $result=mysql_query($tabelle,$link);
    2. if ($result===false)
    3. {
    4. echo "<br>Leider ist ein Fehler aufgetreten: ".mysql_error();
    5. .... Programmaktionen im Fehlerfall
    6. }
    7. else echo "Das Anlegen der Tabelle war erfolgreich.";
  • Feldnamen werden nie mit ' eingeschlossen, höchstens mit `.


    :confused:


    Noch besser ist es, Hochkommas für Indexe zu verwenden. Bei Gänsefüßchen muss der PHP-Parser den Index noch auf zu ersetzende Variableninhalte durchsuchen, was Zeit kostet.


    Yep, da hast Du natürlich vollkommen recht. :)
    Eigentlich hatte ich auch Single Quotes verwendet, aber die hat man nicht wirklich wahrgenommen als ich sie rot hervorgehoben habe. Also hab ich Double Quotes daraus gemacht in der Hoffung das es keiner merkt. ;)

  • cool danke jetzt wo ich wusste was falsch ist wars ganz einfach ich durfte die variable einfach nich name nennen vielen dank nochmal an alle für die schnelle und gute hilfe

  • hmmmaber jetzt hab ich schon wieder ne frage wi kann ich php dazu bringen die namen aller tabellen auszugeben die in einer db enthalten sind sry das ich so ne fragen stell aber ich bin in php noch nich ganz so bewandert ^^:confused: :confused: :confused:

  • hmm hab ich ja aber weder im unterricht noch in den büchern die ich mir besorgt hab steht sowas da steht bloß drin wie man datensätze ausließt u verändert aber nich wie das bei tabllen ist