MySql: Username als Tabellenname benutzen

Michael17

Mitglied
Hallo zusammen,

da ich schon gute Erfahrungen hier im Forum hatte,
habe ich schon die nächste Frage :D

soweit ich weiß ist es ja möglich das ich nach einer Vorgabe in php einen User durch einen klick eine MySql Tabelle erstellen lassen kann, mein Vorhaben wäre aber das dieser OnlineUser seine Tabelle zwar durch einen Klick erstellen kann, diese Tabelle aber nach seinem Namen benannt wird.
Und später würde diese gelöscht werden.

ich dachte mir in etwa so
PHP:
<?php
 include("verbindung.php");
    mysql_select_db("Datenbank");


     	$result = mysql_query("SELECT * FROM user WHERE SessionID");
            while($row = mysql_fetch_row($result))

            echo $row[4].'<br />';



        mysql_query("CREATE TABLE $row['Nickname'] (

        id int(255) NOT NULL auto_increment,

        interpret varchar(100) NOT NULL,

        titel varchar(100) NOT NULL,

        PRIMARY KEY (id) );");

?>

kommt aber leider ein Fehler:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING on line11
und das ist nachfolgende Zeile
PHP:
mysql_query("CREATE TABLE $row['Nickname'] (

Danke für Antworten

// Edit:Sorry, ich bin glaube ich im Falschen Forum
 
Zuletzt bearbeitet:
Probier mal folgendes:
PHP:
mysql_query("CREATE TABLE ".$row['Nickname']." ( 

        id int(255) NOT NULL auto_increment, 

        interpret varchar(100) NOT NULL, 

        titel varchar(100) NOT NULL, 

        PRIMARY KEY (id) );");

bzw.

PHP:
mysql_query("CREATE TABLE {$row['Nickname']} ( 

        id int(255) NOT NULL auto_increment, 

        interpret varchar(100) NOT NULL, 

        titel varchar(100) NOT NULL, 

        PRIMARY KEY (id) );");

Ich gehe mal davon aus, dass Mysql ein Problem mit dem Array hat...
 
Grüße,

ich würde als 1. diese Zeile hier beanstanden:

PHP:
$result = mysql_query("SELECT * FROM user WHERE SessionID");

In der WHERE-Klausel muss natürlich auch ein Spaltenname angegeben werden. Wenn der Spaltenname 'SessionID' ist, dann fehlt hingegen ein Wert, auf den geprüft wird.
Um das mal eben zu verdeutlichen - du hast geschrieben:

"Selektiere alle Datensaätze (komplett) aus der Tabelle user, bei der SessionID..."

Du siehst - es gibt keinen "Abgleich von Daten. Ein möglicher Lösungsvorschlag (ich kenne leider deine Tabellenstruktur nicht:

PHP:
$result = mysql_query("SELECT * FROM user WHERE SessionID=1234");

Hoffe das konnte dir schon weiterhelfen.
 
Also erstmal Danke an alle, das Forum hier ist echt klasse, hier wird immer schnell geholfen :)

Zuerst mal, bin noch ganz frisch im Programmieren, aber habe schon einige Wochen gelesen ;-)

@Lime: beim beiden beispielen von dir kommt:
Notice: Undefined variable: row

@Alex_T: ich möchte ja nur das alle User die SessionID = Not NULL sind die möglichkeit geben eine Tabelle zu erzeugen, mit welchen Daten genau weiß ich noch nicht aber wahrscheinlich nur mit ID und Nickname

@Napofis: in Zeile 10 steht ja nichts drinn


Gruß
 
Gut, das heißt soviel wie, du verwendest eine Variable, die nicht gesetzt wurde.

Das passiert, weil deine 1. Abfrage falsch ist.

PHP:
$result = mysql_query("SELECT * FROM user WHERE SessionID<>'' AND SessionID<>'NULL'");

Wir prüfen, ob in der Session gar nix drin steht (null) oder ob mal was drin war, aber gelöscht wurde (leerer String).
 
Falsch.
Das passiert weil deine Whileschleife keine Klammern hat.
PHP:
   mysql_select_db("Datenbank");


         $result = mysql_query("SELECT * FROM user WHERE SessionID");
            while($row = mysql_fetch_row($result)) {

            echo $row[4].'<br />';



        mysql_query("CREATE TABLE $row['Nickname'] (

        id int(255) NOT NULL auto_increment,

        interpret varchar(100) NOT NULL,

        titel varchar(100) NOT NULL,

        PRIMARY KEY (id) );");
}

PS: Ich habe den fehlerhaften Code von oben kopiert, den Fehler müsstest du wieder ausbessern. Setze aber Klammern um die Whileschleife.

Ansonsten gilt die Whileschleife nur für die nächste Anweisung.
 
Achso, ich bin davon ausgegangen, dass der untere Teil nicht zur While-Schleife gehört und es Absicht ist.

PHP:
   mysql_select_db("Datenbank");


         $result = mysql_query("SELECT * FROM user WHERE SessionID");
            while($row = mysql_fetch_object($result)) {

            echo $row[4].'<br />';



        mysql_query("CREATE TABLE ".$row->Nickname." (

        id int(255) NOT NULL auto_increment,

        interpret varchar(100) NOT NULL,

        titel varchar(100) NOT NULL,

        PRIMARY KEY (id) );");
}

Sollte nun eigentlich funktionieren...
 
Zuletzt bearbeitet:
Ich frage mich wieso Du dynamisch Tabellen erstellen willst? Normalerweise ist das nicht nötig, und in dem Fall imho auch gefährlich. Was könnte denn in "Nickname" stehen? Ein Umlaut? Ein Sonderzeichen wie ' oder `? Macht dein MySQL-Server das dann auch mit?
 
Zurück