[MYSQL + PHP] Tabelle anlegen über install.php

Martin.NN89

Cadet 1st Year
Registriert
Apr. 2009
Beiträge
12
Mahlzeit werte Community-Gemeinschaft.

Ich wollte mir eine Art "Datenbank" programmieren. Über eine install.php sollten die Tabellen angelegt werden, was aber komischerweise nicht klappt.

install.php

PHP:
<?php

include('config.inc.php');

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());

mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); 

mysql_query(
"
CREATE TABLE liste (
      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR (255),
      typ INT,
      spiel TEXT
      version VARCHAR(255),
      patch VARCHAR(2),
      key VARCHAR(255),
      datum DATE,
      ");
      
      

?>


config.inc.php

PHP:
<?php

error_reporting(E_ALL);
define('MYSQL_HOST',    'localhost');
define('MYSQL_USER',    'blabla');
define('MYSQL_PASSWORD',    'XXX');
define('MYSQL_DATABASE',    'blala');

?>


Soll eine Datenbank werden, für meine bisherigen Spiele. Ich verliere sonst den Überblick. xD

Gruß Martin.
 
Die Datenbank "blala" muss bereits bestehen, sonst kannst du keine Tabellen in diese hinzufügen!

Was kommt den als Fehlermeldung?

Änder das mal in:

PHP:
'CREATE TABLE 'blala' . 'liste' ( 
      'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
      'name' VARCHAR(255), 
      'typ' INT, 
      'spiel' TEXT 
      'version' VARCHAR(255), 
      'patch' VARCHAR(2), 
      'key' VARCHAR(255), 
      'datum' DATE, 
      )ENGINE = MyISAM';
 
Zuletzt bearbeitet:
Die Datenbank wurde hinzugefügt,

blabla(0)

Hab ich über phpMyAdmin hinzugefügt.

//Edit

Kommt keine Fehlermeldung, die Seite bleibt weiß, nach aufrufen der install.php
 
Zuletzt bearbeitet:
Und wenn du wissen willst ob es geklappt hat:

echo "hat geklappt";
else "hat nicht geklappt";
 
Zuletzt bearbeitet:
Mach mal ein:

PHP:
OR die ("Fehler: ".mysql_error());

nach dem mysql_query
 
Parse error: syntax error, unexpected T_STRING in /srv/www/sniperman/install.php on line 22

PHP:
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());

mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); 

mysql_query(
"
'CREATE TABLE 'snipermansql1' . 'liste' (
      'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      'name' VARCHAR (255),
      'typ' INT,
      'spiel' TEXT
      'version' VARCHAR(255),
      'patch' VARCHAR(2),
      'key' VARCHAR(255),
      'datum' DATE,
      ")ENGINE = MyISAM';
      
      

?>
 
Du hast da auch komplett alle Anführungszeichen und Hochkommas vermischt und am Ende falsch abgeschlossen :>
 
PHP:
mysql_query( "             
'CREATE TABLE 'snipermansql1' . 'liste' ( 
      'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
      'name' VARCHAR(255), 
      'typ' INT, 
      'spiel' TEXT 
      'version' VARCHAR(255), 
      'patch' VARCHAR(2), 
      'key' VARCHAR(255), 
      'datum' DATE, 
      ")ENGINE = MyISAM';

Die Anführungsstriche beginnen bei
PHP:
mysql_query("
und werden bei
PHP:
") ENGINE = MyISAM'
geschloßen.

Genauso wie das Hochkomma bei
PHP:
'CREATE TABLE
geöffnet und bei
PHP:
ENGINE = MyISAM'
geschloßen wird.


Gut den Fehler hab ich gefunden. Aber Tabellen bleibt trotzdem leer.
Hab mir da jetzt mal den Fehler ausgeben lassen und zwar.

Fehler: Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei ''CREATE TABLE 'snipermansql1' . 'liste' ( 'id' INT NOT NULL AUTO_INCREMEN' in Zeile 1

PHP:
include('config.inc.php');

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());

mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); 

mysql_query( "           
'CREATE TABLE 'snipermansql1' . 'liste' ( 
      'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
      'name' VARCHAR(255), 
      'typ' INT, 
      'spiel' TEXT 
      'version' VARCHAR(255), 
      'patch' VARCHAR(2), 
      'key' VARCHAR(255), 
      'datum' DATE, 
      )ENGINE = MyISAM';  ")
      
      OR die ("Fehler: ".mysql_error());  



?>
 
DATE, ist falsch.

Das Komma sagt das noch was kommt aber nichts kommt.

Nimm es mal raus.
:

PHP:
mysql_query( "            
'CREATE TABLE 'snipermansql1' . 'liste' (  
      'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  
      'name' VARCHAR(255),  
      'typ' INT,  
      'spiel' TEXT  
      'version' VARCHAR(255),  
      'patch' VARCHAR(2),  
      'key' VARCHAR(255),  
      'datum' DATE  
      )ENGINE = MyISAM';  ") 
       
      OR die ("Fehler: ".mysql_error());

echo "MySql Tabelle erstellt!";
 
Zuletzt bearbeitet:
'CREATE TABLE 'snipermansql1' . 'liste' ( 'id' INT NOT NULL AUTO_INCREME' in Zeile 1


Bleibt dabei.
 
PHP:
mysql_query( "            
CREATE TABLE `snipermansql1`.`liste` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) ,
`typ` INT,
`spiel` TEXT,
`version` VARCHAR( 255 ) ,
`patch` VARCHAR( 2 ) ,
`key` VARCHAR( 255 ) ,
`datum` DATE
) ENGINE = MYISAM ") 
       
      OR die ("Fehler: ".mysql_error());

echo "MySql Tabelle erstellt!";
Verwende mal das Statement.
Da hat noch ein Komma gefehlt und es dürfen keine Hochkommata um Tabellen- und Spaltennamen verwendet werden. Das sowas wird dann von MySQl als String interpretiert.

Grüße.
 
Hab das ganze nun per phpMyAdmin eingefügt. Habe mir den SQL Text geschrieben und so per SQL eingebunden.

Nun habe ich ein anderes Problem und zwar, laut Fehlermeldung in dieser Zeile hier

PHP:
            die("Konnte keine Verbindung aufbauen, MySQL meldet: "mysqli_connect_errno());

Fehler: Parse error: syntax error, unexpected T_STRING in /srv/www/sniperman/install.php on line 8


//Gelöst, hab mir das wieder in normal mysql umgeschrieben.
 
Zuletzt bearbeitet:
PHP:
die ("Konnte keine Verbindung aufbauen, MySQL meldet: " . mysqli_connect_errno());
 
Sieht hier jemand ein Fehler?

PHP:
<?php
       // Daten für den Server
error_reporting(E_ALL)       
define   ('MYSQL_HOST',    'localhost');
define   ('MYSQL_USER',    'sniperman');
define   ('MYSQL_PASS',    'xxxx');
define   ('MYSQL_DBNAME',  'sniperman');
       
?>
 
Wenn du uns sagen würdest was für ein Fehler auftritt, könnten wir dir wesentlich besser helfen.

Also ein paar mehr Infos bitte.
 
Entschuldige,

Keine Verbindung zur Datenbank, Fehlermeldung: Unknown MySQL server host 'MYSQL_HOST' (1)

config.inc.php
PHP:
<?php
       // Daten für den Server
error_reporting(E_ALL);       
define   ("MYSQL_HOST",    "localhost");
define   ("MYSQL_USER",    "snipermansql1");
define   ("MYSQL_PASS",    "....");
define   ("MYSQL_DBNAME",  "snipermansql1");
       
?>

add.php
PHP:
<?php



include 'config.inc.php';

@mysql_connect("MYSQL_HOST", "MYSQL_USER", "MYSQL_PASS");
die ("Keine Verbindung zur Datenbank, Fehlermeldung: " . mysql_error());

mysql_select_db("MYSQL_DBNAME") OR
die ("Keine Verbindung zur Datenbank, Fehlermeldung: " . mysql_error());
 
Mehrere Fehler:

Du definierst Konstanten, nutzt diese aber nicht beim mysql_connect() und mysql_select_db().

Dann hast Du beim Connect das OR ( || ) vergessen!
Ich ziehe ||dem OR vor, den so kann man bei einer Dateiübergreifenden Suche schneller nach PHP-Anweisungen oder MySQL-Statements suchen :)

Abschließend würde ich noch die Fehlermeldung entsprechend anpassen...

PHP:
<?php
       // Daten für den Server
error_reporting(E_ALL);       
define   ("MYSQL_HOST",    "localhost");
define   ("MYSQL_USER",    "snipermansql1");
define   ("MYSQL_PASS",    "....");
define   ("MYSQL_DBNAME",  "snipermansql1");
       
?>

PHP:
<?php

include 'config.inc.php';

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) || die ("Keine Verbindung zum Datenbankserver, Fehlermeldung: " . mysql_error());

@mysql_select_db(MYSQL_DBNAME) || die ("Es konnte keine Datenbank selektiert werden, Fehlermeldung: " . mysql_error());
 
Zuletzt bearbeitet:
Ok dann funktioniert ja nun, aber wenn wir schon mal beim Thema sind, die Tabellen ist vorhanden in phpMyAdmin.

Aber wie übergebe ich von einem Formular, die Daten an die Datenbank?
 
Indem Du die POST-Variablen übergibst.

Beispiel (Quelle: php.net):
PHP:
<?php

if (isset($_POST['product_name'])
    && isset($_POST['product_description'])
    && isset($_POST['user_id'])) {

 // Verbinden mit der Datenbank
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')

    if(!is_resource($link)) {

        echo "Verbindung zum Server fehlgeschlagen\n";
     // ... den Fehler loggen

    } else {

     // Die Auswirkungen von magic_quotes_gpc/magic_quotes_sybase zurücksetzen,
     // sofern die Option auf ON gesetzt ist

        if(get_magic_quotes_gpc()) {
            $product_name        = stripslashes($_POST['product_name']);
            $product_description = stripslashes($_POST['product_description']);
        } else {
            $product_name        = $_POST['product_name'];
            $product_description = $_POST['product_description'];
        }

     // einen sicheren Query zusammenstellen
        $query = sprintf("INSERT INTO products (`name`, `description`, `user_id`) VALUES ('%s', '%s', %d)",
                    mysql_real_escape_string($product_name, $link),
                    mysql_real_escape_string($product_description, $link),
                    $_POST['user_id']);

        mysql_query($query, $link);

        if (mysql_affected_rows($link) > 0) {
            echo "Produkt eingefuegt\n";
        }
    }
} else {
    echo "Fuellen Sie das Formular korrekt aus.\n";
}
?>
 

Ähnliche Themen

Zurück
Oben