MySQL "CREATE TABLE" innerhalb eines PHP Docs?

PenSpinner MX
Servus

Hab mal ne Frage:
Man kann MySQL Anweisungen NICHT innerhalb von <?php und ?> machen, oder? Bei mir zeigt der nämlich dann den Fehler an, dass ich an der Stelle keine Klammer schreiben darf...

Gruß,
Maddin
Ghostmaster
Eigentlich schon. Wie sieht denn dein Scriptum aus?
PenSpinner MX
Eigentlich ganz einfach:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php
    CREATE TABLE User (
    Name VARCHAR(20),
    Passwort VARCHAR(20),
    Passwort2 VARCHAR(20),
    E-Mail VARCHAR(50),
    E-Mail2 VARCHAR(50),
    );
?>


Das Ergebnis, siehe hier: www.scriptlearn.de/login.php
Ghostmaster
Okay, zunächst fehlt einmal die Verbindung zur Datenbank und dann musst du deinen Befehl auch in eine mysql Funktion setzen. Augenzwinkern
PenSpinner MX
O.o mist, die Verbindung hab ich total versäumt xDD^^

Und wie in eine MySQL Funktion setzen?
Ghostmaster
Mit mysql_query();

Dort musst du deine Abfrage hineinschreiben. Augenzwinkern
PenSpinner MX
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<?php
    include ("inc/config.php");
    $db_link = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
    mysql_query(
    CREATE TABLE User (
    Name VARCHAR(20),
    Passwort VARCHAR(20),
    Passwort2 VARCHAR(20),
    E-Mail VARCHAR(50),
    E-Mail2 VARCHAR(50),
    );
    );
?>


Funktionert immer noch nicht... was ist jetzt falsch?
Ghostmaster
Ohne testen fällt mir das leider auch nicht allzu leicht, muss ich ehrlich zugeben. Aber probiers mal hiermit:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<?php
    include ("inc/config.php");
    $db_link = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
    mysql_query("
    CREATE TABLE User (
    `name`VARCHAR(20) NOT NULL default '',
    `passwort` VARCHAR(20) NOT NULL default '',
    `passwort2 VARCHAR(20) NOT NULL default '',
    `e-Mail` VARCHAR(50) NOT NULL default '',
    `e-Mail2` VARCHAR(50) NOT NULL default ''
    ");
?>
PenSpinner MX
Ne, sry, das ist noch falscher...
http://www.scriptlearn.de/login.php
Oder ich bin zu blöd um den Text zu kopieren und einzufügen Zunge raus ^^
Ghostmaster
Nagut, die Logindaten musst du schon selbst eintragen, dass kann ich nicht für dich tun. großes Grinsen
codingnoob
Wie wärs mit Datenbank auswählen?
mysql_select_db() hat noch nie geschadet
Maniac_81
deine "inc/config.php" sollte so aussehen:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
$sqlhost "xxx";
    $sqluser "xxx";
    $sqlpw "xxx";
    $dbname "xxx";
    
    $connect mysql_connect($sqlhost$sqluser$sqlpw) or die(mysql_error());
    mysql_select_db($dbname$connect);
    
    if (!$connect)
    {
        echo "es konnte keine verbindung zu DB aufgebaut werden";
    }


und dein script denn wohl so:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
$sql mysql_query("
    CREATE TABLE User (
    Name VARCHAR(20),
    Passwort VARCHAR(20),
    Passwort2 VARCHAR(20),
    E-Mail VARCHAR(50),
    E-Mail2 VARCHAR(50),
    );") or die(mysql_error());
    if (!$sql)
    {
        echo "konnte tabellen nicht erstellen!";
    }
PenSpinner MX
So, habs jetzt richtig gemacht:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
<?php
    include ("inc/config.php");
    $db_link = mysql_connect(MySQL_HOST, MySQL_USER, MySQL_PASS);
    mysql_select_db(MySQL_DATABASE);
    mysql_query("
    CREATE TABLE User (
    `name`VARCHAR(20) NOT NULL default '',
    `passwort` VARCHAR(20) NOT NULL default '',
    `passwort2 VARCHAR(20) NOT NULL default '',
    `e-Mail` VARCHAR(50) NOT NULL default '',
    `e-Mail2` VARCHAR(50) NOT NULL default '',
    );
    ");
    mysql_query("
    INSERT INTO User
    (name,passwort,passwort2,e-mail,e-mail2)
    VALUES
    (deMaddin,thebospeler,thebospeler,demaddin@scriptlearn.de,demaddin@scriptlearn.de);
    ");
        $result = mysql_query('SELECT name FROM User') OR die(mysql_error());
    echo 'Der Name des Users ist '.$result;
?>


Es liegt daran, dass die Tabelle "User" nicht erstellt werden kann!!! unglücklich ...

Wieso nicht? Verbindung und alles steht!
codingnoob
Ich weiß nicht, ob es eine Rolle spielt, aber in Zeile 7 fehlt ein Leerzeichen:
code:
1:
2:
    `name`VARCHAR(20) NOT NULL default '',
         /\ da
PenSpinner MX
Zitat:
Original von codingnoob
Ich weiß nicht, ob es eine Rolle spielt, aber in Zeile 7 fehlt ein Leerzeichen:
code:
1:
2:
    `name`VARCHAR(20) NOT NULL default '',
         /\ da


Nein, hat nichts verändert...
Rogerhuber
Ich glaub ja fast in Zeile 11 ist am ende ein Komma zuviel.

Aber ein "or die(mysql_error());" verrät dir das Geheimnis Augenzwinkern

EDIT: Bei passwort2 fehlt das abschliessende `.

Nebenbei haut das letzte Query so zwar hin, aber ansprechen mit $result kannst vergessen. Nebenbei gibt dir das jeden Datensatz der Tabelle aus.

BTW: Macht MySQL nicht ein unterschied zwischen Gross/Klein-Geschriebenen Feldern?
Maniac_81
Zitat:
Original von PenSpinner MX
So, habs jetzt richtig gemacht:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
<?php
    include ("inc/config.php");
    $db_link = mysql_connect(MySQL_HOST, MySQL_USER, MySQL_PASS);
    mysql_select_db(MySQL_DATABASE);
    mysql_query("
    CREATE TABLE User (
    `name`VARCHAR(20) NOT NULL default '',
    `passwort` VARCHAR(20) NOT NULL default '',
    `passwort2 VARCHAR(20) NOT NULL default '',
    `e-Mail` VARCHAR(50) NOT NULL default '',
    `e-Mail2` VARCHAR(50) NOT NULL default '',
    );
    ");
    mysql_query("
    INSERT INTO User
    (name,passwort,passwort2,e-mail,e-mail2)
    VALUES
    (deMaddin,thebospeler,thebospeler,demaddin@scriptlearn.de,demaddin@scriptlearn.de);
    ");
        $result = mysql_query('SELECT name FROM User') OR die(mysql_error());
    echo 'Der Name des Users ist '.$result;
?>


Es liegt daran, dass die Tabelle "User" nicht erstellt werden kann!!! unglücklich ...

Wieso nicht? Verbindung und alles steht!


php:
1:
2:
3:
4:
5:
6:
7:
CREATE TABLE User (
    `name`VARCHAR(20NOT NULL default '',
    `passwortVARCHAR(20NOT NULL default '',
    `passwort2 VARCHAR(20) NOT NULL default '',
    `e-Mail` VARCHAR(50) NOT NULL default '',
    `e-Mail2` VARCHAR(50) NOT NULL default '',
    );

kann nicht gehen, da hier ein komma zuviel und ein ` zuwenig ist.

so gehörts:
php:
1:
2:
3:
4:
5:
6:
7:
CREATE TABLE User (
    `nameVARCHAR(20NOT NULL default '',
    `passwortVARCHAR(20NOT NULL default '',
    `passwort2VARCHAR(20NOT NULL default '',
    `e-MailVARCHAR(50NOT NULL default '',
    `e-Mail2VARCHAR(50NOT NULL default ''
    );
[kamui]
Und forme deinen Befehl wie folgt um:
php:
1:
mysql_query("SQL...") or die(mysql_error());
PenSpinner MX
Ok, es funzt jetzt alles, zhx an Maniac (und dem Rest natürlich auch^^).

Gruß, MAddin.

PS: PLS closen!