Jo: Datenbank und Tabelle erstellen

Morgen zusammen,

Ich versuche gerade meine bisherige Datenbank per php zu erstellen, damit ich die nicht ständig exportieren und importieren muss, wenn es mal an einen anderen Rechner geht.

Bisher kann ich die Datenbank anlegen aber ich schaffe es einfach nicht eine Tabelle in dieser anzulegen. Hier mein derzeitiger stand:

<?php

$db = mysql_connect("localhost","root","")or DIE ("Keine verbindung zur Datenbank");
if(!$db) 
{
	die ("Keine Datenbank verfügbar!");
}

if(!mysql_select_db("db1",$db))
{
	
	$db_erstellen = "CREATE DATABASE db1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci";
	$erstellen = mysql_query($db_erstellen);
	
	if(mysql_select_db('db1',$db))
	{
		$frage = "SELECT * FROM tab1";
		$fragen = mysql_query($frage);
		if($fragen != TRUE)
		{
			$erstelle = "CREATE TABLE `tab1`(col1 TINYINT (2) NOT NULL PRIMARY KEY )";
			$erstellen = mysql_query($erstelle);
			if($erstellen == TRUE)
			{
				echo "Tabelle erstellt";
			}
			else
			{
				echo "Tabelle nicht erstellt";
			}
		}
	}
	else
	{
		die ("Datenbank nicht verfügbar!");
	}
	
}

?>

Hoffe ihr seht da was ich noch falsch mache. Danke schonmal für die Hilfe.

Gruß Jo

  1. Tach!

    Hoffe ihr seht da was ich noch falsch mache.

    Zum einen, du sagst uns nicht, an welcher Stelle du konkret was erwartest und was stattdessen bekommst. Zum anderen reagierst du im Code zwar auf die Rückgabewerte, aber du fragst die Texte der MySQL-Fehlermeldungen nicht ab.

    dedlfix.

    1. Hi,

      Hoffe ihr seht da was ich noch falsch mache.

      Zum einen, du sagst uns nicht, an welcher Stelle du konkret was erwartest und was stattdessen bekommst. Zum anderen reagierst du im Code zwar auf die Rückgabewerte, aber du fragst die Texte der MySQL-Fehlermeldungen nicht ab.

      Wie frage ich die denn ab?

      Gruß Jo

      1. Tach!

        Zum anderen reagierst du im Code zwar auf die Rückgabewerte, aber du fragst die Texte der MySQL-Fehlermeldungen nicht ab.

        Wie frage ich die denn ab?

        Du schaust dir da am besten mal das PHP-Handbuch an. Die alte mysql-Extension lässt du links liegen und gehst gleich zu mysqli: http://php.net/manual/en/book.mysqli.php. Dort gibt es einen Quick start guide. In den Beispielen wird auch die Fehlerbehandlung gezeigt.

        Alternativ kannst du PDO nehmen, das ist an manchen Stellen benutzerfreundlicher. Auch dafür gibts im PHP-Handbuch eine Anleitung, wie mit Fehlern umgegangen werden kann.

        dedlfix.

  2. Tach,

    <?php
    
    $db = mysql_connect("localhost","root","")or DIE ("Keine verbindung zur Datenbank");
    if(!$db) 
    {
    	die ("Keine Datenbank verfügbar!");
    }
    
    if(!mysql_select_db("db1",$db))
    {
    	
    	$db_erstellen = "CREATE DATABASE db1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci";
    	$erstellen = mysql_query($db_erstellen);
    	
    	if(mysql_select_db('db1',$db))
    	{
    		$frage = "SELECT * FROM tab1";
    		$fragen = mysql_query($frage);
    		if($fragen != TRUE)
    		{
    			$erstelle = "CREATE TABLE `tab1`(col1 TINYINT (2) NOT NULL PRIMARY KEY )";
    			$erstellen = mysql_query($erstelle);
    			if($erstellen == TRUE)
    			{
    				echo "Tabelle erstellt";
    			}
    			else
    			{
    				echo "Tabelle nicht erstellt";
    			}
    		}
    	}
    	else
    	{
    		die ("Datenbank nicht verfügbar!");
    	}
    	
    }
    
    ?>
    
    1. Du solltest anfangen MySQLi oder PDO_MySQL zu verwenden, die alten MYSQL-Funktionen sind obsoltete und werden entfernt werden.
    2. Wie lautet die Ausgabe deines Programmes?
    3. Wie lautet die Ausgabe von mysql_error an der Stelle an der der Fehler auftritt?

    mfg
    Woodfighter

    1. Hi,

      1. Wie lautet die Ausgabe deines Programmes?

      Als Ausgabe kommt nur: Tabelle nicht erstellt. Die Datenbank wird zwar angelegt aber nicht die Tabelle in der Datenbank. Diese Soll ja angelegt werden falls sie nicht existiert:

      $frage = "SELECT * FROM tab1";
      		$fragen = mysql_query($frage);
      		if($fragen != TRUE)
      		{
      			$erstelle = "CREATE TABLE `tab1`(col1 TINYINT (2) NOT NULL PRIMARY KEY )";
      			$erstellen = mysql_query($erstelle);
      			if($erstellen == TRUE)
      			{
      				echo "Tabelle erstellt";
      			}
      			else
      			{
      				echo "Tabelle nicht erstellt";
      			}
      		}
      
      1. Wie lautet die Ausgabe von mysql_error an der Stelle an der der Fehler auftritt?

      Öhm... Was?^^

      Gruß Jo

      1. Tach!

        $frage = "SELECT * FROM tab1";
        		$fragen = mysql_query($frage);
        		if($fragen != TRUE)
        		{
        			$erstelle = "CREATE TABLE `tab1`(col1 TINYINT (2) NOT NULL PRIMARY KEY )";
        			$erstellen = mysql_query($erstelle);
        			if($erstellen == TRUE)
        			{
        				echo "Tabelle erstellt";
        			}
        			else
        			{
        				echo "Tabelle nicht erstellt";
        			}
        		}
        
        1. Wie lautet die Ausgabe von mysql_error an der Stelle an der der Fehler auftritt?

        Öhm... Was?^^

        Was liefert denn mysql_query() zurück? Im Gutfall und im Fehlerfall? Das PHP-Handbuch kann diese Frage beantworten.

        Im Falle eines Fehlers muss der konkrete Wortlaut mit der erwähnten Funktion mysql_error() erst geholt werden. PHP holt den nicht von sich aus.

        dedlfix.

        1. Tach!

          $frage = "SELECT * FROM tab1";
          		$fragen = mysql_query($frage);
          		if($fragen != TRUE)
          		{
          			$erstelle = "CREATE TABLE `tab1`(col1 TINYINT (2) NOT NULL PRIMARY KEY )";
          			$erstellen = mysql_query($erstelle);
          			if($erstellen == TRUE)
          			{
          				echo "Tabelle erstellt";
          			}
          			else
          			{
          				echo "Tabelle nicht erstellt";
          			}
          		}
          
          1. Wie lautet die Ausgabe von mysql_error an der Stelle an der der Fehler auftritt?

          Öhm... Was?^^

          Was liefert denn mysql_query() zurück? Im Gutfall und im Fehlerfall? Das PHP-Handbuch kann diese Frage beantworten.

          Gutfall: eine resource. Fehlerfall: False.

          Im Falle eines Fehlers muss der konkrete Wortlaut mit der erwähnten Funktion mysql_error() erst geholt werden. PHP holt den nicht von sich aus.

          sprich etwas wie:

          $err = mysql_error(...);
          echo $err;
          

          ?

          Ich bekomme eigentlich keinen Fehler, es wird eben einfach nur keine tabelle erstellt.

          Jo

          1. Tach!

            Was liefert denn mysql_query() zurück? Im Gutfall und im Fehlerfall? Das PHP-Handbuch kann diese Frage beantworten.

            Gutfall: eine resource. Fehlerfall: False.

            Im Falle eines Fehlers muss der konkrete Wortlaut mit der erwähnten Funktion mysql_error() erst geholt werden. PHP holt den nicht von sich aus.

            sprich etwas wie:

            $err = mysql_error(...);
            echo $err;
            

            ?

            Soweit richtig.

            Ich bekomme eigentlich keinen Fehler, es wird eben einfach nur keine tabelle erstellt.

            Wenn bei dir "Tabelle nicht erstellt" ausgegeben wird, war der Rückgabewert von mysql_query() false und in dem Fall muss auch mysql_error() direkt danach abgefragt die zugehörige Fehlermeldung ergeben.

            Bei mir wird "Tabelle erstellt" ausgegeben, und nicht nur das, sie wurde auch tatsächlich angelegt. Der Fehler bei dir hängt also von deinen Gegebenheiten ab, und die bekommst du nur mit den genannten Mitteln aufgezeigt, also mysql_error() befragen.

            dedlfix.