Stahl Florian: mysql_create_db()

Hallo an alle,
Ich habe ein Problem mit einer Datenbank. Die Verbindung besteht und Zugriff hab ich auch darauf.
Ich habe folgenden code geschrieben:

<?php
$benutzer = "root";
$passwort = "";
$dbname = "testdatenbank";

$link = mysql_connect("localhost",$benuter);

if
 (mysql_create_db($dbname, $link)) {echo "Die Datenbank $dbname wurde erstellt";}
else
 {echo "Die Datenbank $dbname konnte nicht erstellt werden";}

?>

Im browser kommt der Fehler:

Fatal error: Call to undefined function mysql_create_db() in C:\www\PHP lernen\counter.php on line 12

Das heist für mich soviel wie der kennt die funktion nicht. Was mache ich falsch oder was kann ich ändern? Bitte helft mir.

Mit freundlichen Grüssen
------------------------
Stahl Florian
------------------------

--
Das Leben ist hart, aber wir sind härter
  1. Hallo Stahl,

    Die Antwort steht, wie üblich, im PHP-Handbuch

    Anmerkung:  Die Funktion mysql_create_db() ist veraltet. Stattdessen sollte mit der Funktion mysql_query()  der SQL-Befehl  CREATE DATABASE ausgeführt werden.
    Warnung: Diese Funktion steht nicht zur Verfügung, wenn das MySQL Modul gegen eine MySQL 4.x Client-Bibliothek gelinkt wurde.

    Bitte schau immer erst ins Handbuch, wenn du eine Frage zu PHP hast.

    Gruß,

    Dieter

    1. Hallo an alle, »» Hallo Stahl,

      Die Antwort steht, wie üblich, im PHP-Handbuch

      Anmerkung:  Die Funktion mysql_create_db() ist veraltet. Stattdessen sollte mit der Funktion mysql_query()  der SQL-Befehl  CREATE DATABASE ausgeführt werden.
      Warnung: Diese Funktion steht nicht zur Verfügung, wenn das MySQL Modul gegen eine MySQL 4.x Client-Bibliothek gelinkt wurde.

      Bitte schau immer erst ins Handbuch, wenn du eine Frage zu PHP hast.

      Danke.
      Mit freundlichen Grüssen
      ------------------------
      Stahl Florian
      ------------------------

      --
      Das Leben ist hart, aber wir sind härter
      1. Hallo an alle,

        Jetzt habe ich nochmal geprüft mit if ob die verbindung besteht. Ja sie besteht. Nun will ich eine Datenbank erstellen, auch in einer IF anweisung mit rein, da sagt der Datenbank kann nicht erstellt werden.

        Kennt jemand dieses Problem?

        Mit freundlichen Grüssen
        ------------------------
        Stahl Florian
        ------------------------

        --
        Das Leben ist hart, aber wir sind härter
        1. Hallo Stahl,

          Erklaer doch bitte mal genau, was du da treibst

          Gruß,

          Dieter

          1. Hallo an alle,

            Ich beschäftige mich seit heute mit Mysql und mache dies anhand eines buches.

            Nun habe ich vor längerer Zeit einen lokalen Apache mit PHP und Mysql installiert.

            Nun prüfe ich ob eine Verbindung besteht:

            if($link = mysql_connect("localhost","root")) {echo "ja";} else {echo "nein";}

            Ergebniss: JA

            Dann will ich eine DB erstellen:

            if
             (mysql_query($dbname, $link)) {echo "Die Datenbank $dbname wurde erstellt";}
            else
             {echo "Die Datenbank $dbname konnte nicht erstellt werden";}

            Ergebniss: Die Datenbank konnte nicht erstellt werden

            Nun weis ich nicht was ich machen soll, da ich da noch neu bin in dem Gebiet Datenbanken.

            Mit freundlichen Grüssen
            ------------------------
            Stahl Florian
            ------------------------

            --
            Das Leben ist hart, aber wir sind härter
            1. Hi,

              Nun weis ich nicht was ich machen soll, da ich da noch neu bin in dem Gebiet Datenbanken.

              Versuch dir einfach erstmal Klarheit darüber zu verschaffen, was du alles tun willst:

              Du hast heute angefangen dich mit Datenbanksystemen auseinanderzusetzen. OK.

              Mir selbst hat es damals geholfen, da erstmal das MySQL-Tutorial durchzulesen (oder das neuere für die Version 5.0., hängt davon ab, welche Version du installiert hast.)

              Dann: Mach erstmal _ohne_ PHP ein paar grundsätzliche Datenbank-Abfrage-Übungen.
              Sinnvoll ist es dabei, wenn Du in einem Eingabeaufforderungs-Fenster (Windows) bzw. in einer Shell (Unixe) den Befehl

              mysql -user root -password

              eingibst (danach nochmal Enter für das leere Passwort). Damit öffnest Du einen interaktiven MySQL-Client, über den du direkt SQL-Statements absetzen kannst. (Aber lies, wie gesagt, dabei das Tutorial.)

              Wenn du dich damit vertraut gemacht hast, _dann_ schau dir nochmal die PHP-MySQL-Funktionen an.
              Glaub mir: In dieser Reihenfolge ist das alles sehr viel einfacher zu verstehen.

              Freundliche Grüße,
              Sancho

              1. Hallo an alle, »

                DAnke.is ja alles schön und gut. Ich hab mir ein Buch gekauft in dem es um PHP5 & MySQL4 geht. Das mach ich durch. PHP5 hab ich schon durch und seit heut möchte ich mich mit dem Kapitel MySQL beschäftigen.

                Die anderen Sachen sagen mir nichts. DAs was ich nun machen will bzw. mein Problem ist, das ist der Anfang, sprich der erste Schritt.

                Mit freundlichen Grüssen
                ------------------------
                Stahl Florian
                ------------------------

                --
                Das Leben ist hart, aber wir sind härter
              2. mysql -user root -password

                Quark, muss natürlich

                mysql -u root -p

                bzw.

                mysql --user root --password

                heißen.

                *Quork*
                Sancho

            2. Moin!

              Ich beschäftige mich seit heute mit Mysql und mache dies anhand eines buches.

              Dann solltest du folgenden dringenden Ratschlag IMMER beherzigen:

              MySQL liefert dir zu jedem nicht erfolgreichen SQL-Befehl eine Fehlermeldung, die du in PHP mittels der Funktion mysql_error() abfragen und ausgeben kannst.

              Wenn du SQL lernst, ist das extrem hilfreich - man macht einfach zu viele dumme Tippfehler, die man ohne Fehlermeldung einfach nicht sofort sieht.

              Nun habe ich vor längerer Zeit einen lokalen Apache mit PHP und Mysql installiert.

              Noch ein sehr guter Rat: Installiere dir PHPMyAdmin. Damit kriegst du ein Verwaltungsinterface für alle Aspekte der Datenbank: Userverwaltung, neue Datenbanken, bestehende Datenbanken angucken, Tabellen angucken, erstellen, verändern etc. - ohne dass du dich bei diesen Arbeiten noch zusätzlich mit PHP-Programmierung rumschlagen mußt.

              PHP ist eine Programmiersprache - SQL ist eine andere Programmiersprache. Beides zusammen zu fügen ist nochmal eine Stufe komplizierter, weil PHP lauffähigen SQL-Code generieren muß. Wenn du diese Stufe zum allerersten Lernen erstmal wegläßt, ist dir sicherlich deutlich mehr geholfen - zumal Dinge wie das Anlegen einer Datenbank bzw. das Anlegen von Tabellen in einer Datenbank etwas ist, was man normalerweise kaum sehr häufig in PHP-Skripten erledigen muß.

              Dann will ich eine DB erstellen:

              if
              (mysql_query($dbname, $link)) {echo "Die Datenbank $dbname wurde erstellt";}
              else
              {echo "Die Datenbank $dbname konnte nicht erstellt werden";}

              Was steht in $dbname drin? Ein gültiger SQL-Befehl zur Erstellung einer Datenbank? Mutmaßlich nicht!

              Ich komme zurück zu meinem obigen Ratschlag: Nutze mysql_error(), um Datenbankfehlermeldungen auszugeben:

              echo "Die Datenbank $dbname konnte nicht erstellt werden. Fehlermeldung: ".mysql_error();

              Nun weis ich nicht was ich machen soll, da ich da noch neu bin in dem Gebiet Datenbanken.

              Wenn in $dbname nur der Name der gewünschten Datenbank drinsteht, dann klappt das nicht, weil du der Datenbank mit mysql_query() nur komplette, korrekte SQL-Befehle übermitteln kannst - mit nur dem Datenbanknamen weiß MySQL nicht, was zu tun ist.

              Lies in deinem Buch nach, welcher SQL-Befehl eine Datenbank erstellt. Wenn das Buch dafür tatsächlich mysql_create_db() verwendet: Schmeiß das Buch auf den Müll, es ist offensichtlich hoffnungslos veraltet und sollte nicht mehr benutzt werden. Du würdest Dinge lernen, die in PHP schon lange rausgeworfen wurden, oder aus heutiger Sicht als absolut rückständig oder gar als gefährlich betrachtet werden.

              - Sven Rautenberg

              --
              My sssignature, my preciousssss!
              1. Hallo an alle,

                Wie gesat. ich arbeite nach einem buch und da kommt phpmyadmin erst im nächsten kapitel.Wenn ich mysql_query() einsetze kommt folglich meiner if anweisung: Konnte nicht erstellt werden. mysql_error() kommt auch erst später, so ein par seiten später.

                Aber ich hänge jetzt voll und komm net weiter? Hab euere Vorschläge schon angenommen, aber wie komm ich in diesem Problem weiter?

                Mit freundlichen Grüssen
                ------------------------
                Stahl Florian
                ------------------------

                --
                Das Leben ist hart, aber wir sind härter
                1. Hallo Florian,

                  Wie gesat. ich arbeite nach einem buch

                  wie bereits erwähnt: Wirf Dein Buch weg oder versuch' es meistbietend an den Mann oder die Frau zu bringen :-)

                  und da kommt phpmyadmin erst im nächsten kapitel.Wenn ich mysql_query() einsetze kommt folglich meiner if anweisung: Konnte nicht erstellt werden. mysql_error() kommt auch erst später, so ein par seiten später.

                  Wie sieht Dein SQL-Statement aus, das Dir Dieter bereits ans Herz gelegt hat?

                  Aber ich hänge jetzt voll und komm net weiter? Hab euere Vorschläge schon angenommen,

                  Sancho hat es Dir doch bereits gesagt: Vergiß für eine Weile PHP und setze Dich mit SQL auseinander. Es ist selbstverständlich nicht verwunderlich, dass Du die Syntax von CREATE DATABASE im MySQL-Handbuch findest.

                  Wenn Dein Buch immer noch mit mysql_create_db() arbeitet, so möchte ich lieber nicht wissen, welch uraltes Zeug zu MySQL drin steht. Ich habe schon in einige Bücher in der Buchhandlung reingeschaut, die kaum überarbeitete Updates zu PHP 4.0.x und MySQL 3.23.y waren. Ich bin gespannt, ob Du eine _aktuelle_ phpMyAdmin-Version mit Deinem Buch zum Laufen bekommst.

                  Freundliche Grüße

                  Vinzenz

                  1. Hallo an alle,

                    Wie sieht Dein SQL-Statement aus, das Dir Dieter bereits ans Herz gelegt hat?

                    Der PHP fehler is zwar weg im Browser, nur meldet die IF bedingung, Kann Datenbank nicht erstellen.

                    Mit freundlichen Grüssen
                    ------------------------
                    Stahl Florian
                    ------------------------

                    --
                    Das Leben ist hart, aber wir sind härter
                    1. Hallo Florian,

                      könntest Du bitte auf eine Frage antworten?

                      Wie sieht Dein SQL-Statement aus, das Dir Dieter bereits ans Herz gelegt hat?

                      Eines der Argumente von mysql_query ist ein SQL-Statement, eine Zeichenkette.
                      Könntest Du bitte hier posten, wie bei Dir der Inhalt dieser Zeichenkette aussieht. Sonst können wir Dir herzlich wenig weiterhelfen.

                      Der PHP fehler is zwar weg im Browser, nur meldet die IF bedingung, Kann Datenbank nicht erstellen.

                      Die beste Methode, um das Erstellen von Datenbanken zu erlernen, ist die von Sancho Dir empfohlene:

                      1. Schreibe Dir Dein SQL-Statement zum Erstellen einer Datenbank auf Papier
                         Im einfachsten Falle lautet dies:

                      CREATE DATABASE datenbankname

                      2. Öffne eine Kommandozeile.
                         Melde Dich mit

                      mysql --user root --password

                      und anschließender Passworteingabe am Datenbankserver an.

                      3. Gib an der mysql-Kommandozeile, die Du an dem Prompt mysql>
                         erkennst folgendes ein:

                      CREATE DATABASE datenbankname;

                      Wichtig ist hierbei das Semikolon, das das SQL-Statement abschließt.
                         Die Ausgabe könnte wie folgt aussehen:

                      Query OK, 1 row affected (0.10 sec)

                      MySQL stellt Dir zwei weitere Hilfsmittel zur Verfügung, mit denen Du Datenbanken verwalten und SQL-Anweisungen ausführen kannst:

                      - MySQL Administrator
                         - MySQL Query Browser

                      Freundliche Grüße

                      Vinzenz

                      1. Hallo an alle, »» Hallo Florian,

                        könntest Du bitte auf eine Frage antworten?

                        Wie sieht Dein SQL-Statement aus, das Dir Dieter bereits ans Herz gelegt hat?

                        Eines der Argumente von mysql_query ist ein SQL-Statement, eine Zeichenkette.
                        Könntest Du bitte hier posten, wie bei Dir der Inhalt dieser Zeichenkette aussieht. Sonst können wir Dir herzlich wenig weiterhelfen.

                        Ich kann damit nicht viel anfangen da ich über datenbanken 000 ahnung hab nur nach diesem buch etwas mache. Mit mysql_query() ist wie gesagt die Fehlermeldung weg aber die verbindung geht trotzdem net.

                        Der PHP fehler is zwar weg im Browser, nur meldet die IF bedingung, Kann Datenbank nicht erstellen.

                        Die beste Methode, um das Erstellen von Datenbanken zu erlernen, ist die von Sancho Dir empfohlene:

                        1. Schreibe Dir Dein SQL-Statement zum Erstellen einer Datenbank auf Papier
                             Im einfachsten Falle lautet dies:

                        CREATE DATABASE datenbankname

                        1. Öffne eine Kommandozeile.
                             Melde Dich mit

                        mysql --user root --password

                        und anschließender Passworteingabe am Datenbankserver an.

                        1. Gib an der mysql-Kommandozeile, die Du an dem Prompt mysql>
                             erkennst folgendes ein:

                        CREATE DATABASE datenbankname;

                        Wichtig ist hierbei das Semikolon, das das SQL-Statement abschließt.
                           Die Ausgabe könnte wie folgt aussehen:

                        Query OK, 1 row affected (0.10 sec)

                        MySQL stellt Dir zwei weitere Hilfsmittel zur Verfügung, mit denen Du Datenbanken verwalten und SQL-Anweisungen ausführen kannst:

                        - MySQL Administrator
                           - MySQL Query Browser

                        Freundliche Grüße

                        Vinzenz

                        Mit freundlichen Grüssen
                        ------------------------
                        Stahl Florian
                        ------------------------

                        --
                        Das Leben ist hart, aber wir sind härter
                        1. Hallo Florian,

                          könntest Du bitte auf eine Frage antworten?

                          ich wiederhole mich: Könntest Du bitte auf eine Frage antworten.

                          Wie sieht Dein SQL-Statement aus, das Dir Dieter bereits ans Herz gelegt hat?

                          Ich kann damit nicht viel anfangen da ich über datenbanken 000 ahnung hab nur nach diesem buch etwas mache. Mit mysql_query() ist wie gesagt die Fehlermeldung weg aber die verbindung geht trotzdem net.

                          Verdammt noch mal! Du schreibst, Du habest PHP einigermaßen durch. Eine Zeichenkette, ja die nennt man auch String.

                          Die Syntax von mysql_query() lautet:

                          <zitat>
                          resource mysql_query ( string Anfrage [, resource Verbindungs-Kennung] )
                          </zitat>

                          Wie lautet in _Deinem_ Code der String "Anfrage"?
                          Das was dort drin steht, das ist eine SQL-Anweisung.
                          Diese möchte ich wissen. Kannst Du nicht endlich konstruktiv mitarbeiten?

                          Poste bitte Deinen Code. Copy and Paste bitte.

                          Freundliche Grüße

                          Vinzenz

                          1. Hallo an alle,

                            Kannst Du nicht endlich konstruktiv mitarbeiten?
                            Ich versuche es, hab nur manchmal kleine verständnissprobleme weil ich das Wort DATENBANKEN nur gehört habe und das ist ja wohl menschlich oder net??

                            Hier mein Code:

                            <?php
                            $benutzer = "root";
                            $passwort = "";
                            $dbname = "testdatenbank";

                            if($link = mysql_connect("localhost", "root", "")) {echo "ja";} else {echo "nein";}

                            if
                             (mysql_query($dbname, $link)) {echo "GEHT";}
                            else {echo "geht net";}

                            ?>
                            Mit freundlichen Grüssen
                            ------------------------
                            Stahl Florian
                            ------------------------

                            --
                            Das Leben ist hart, aber wir sind härter
                            1. Hi,

                              $dbname = "testdatenbank";
                              (mysql_query($dbname, $link)) {echo "GEHT";}

                              Sven hat Dir doch schon vor vielen Stunden mitgeteilt, daß der Name der Datenbank kein sinnvoller Wert für den ersten Parameter von mysql_query ist.
                              Wieso verwendest Du immer noch den Namen der Datenbank?

                              cu,
                              Andreas

                              --
                              Warum nennt sich Andreas hier MudGuard?
                              Schreinerei Waechter
                              O o ostern ...
                              Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                              1. Hallo an alle, »» Hi,

                                $dbname = "testdatenbank";

                                Sven hat Dir doch schon vor vielen Stunden mitgeteilt, daß der Name der Datenbank kein sinnvoller Wert für den ersten Parameter von mysql_query ist.
                                Wieso verwendest Du immer noch den Namen der Datenbank?

                                Habe etz geschrieben (mysql_query(CREATE DATABASE, $link))

                                jetzt kommt aber fehler in zeile 12 des ist diese zeile?

                                Mit freundlichen Grüssen
                                ------------------------
                                Stahl Florian
                                ------------------------

                                --
                                Das Leben ist hart, aber wir sind härter
                            2. Hallo Florian,

                              Kannst Du nicht endlich konstruktiv mitarbeiten?
                              Ich versuche es, hab nur manchmal kleine verständnissprobleme weil ich das Wort DATENBANKEN nur gehört habe und das ist ja wohl menschlich oder net??

                                
                              
                              > <?php  
                              > $benutzer = "root";  
                              > $passwort = "";  
                              > $dbname = "testdatenbank";  
                              >   
                              > if($link = mysql_connect("localhost", "root", "")) {echo "ja";} else {echo "nein";}  
                                
                              // Wozu weist Du zuerst die Verbindungsdaten Variablen zu,  
                              // wenn Du die Variablen doch nicht nutzt.  
                                
                              // Ich nehme an, hier wird "ja" ausgegeben :-)  
                                
                              
                              > if  
                              >  (mysql_query($dbname, $link)) {echo "GEHT";}  
                              > else {echo "geht net";}  
                              
                              

                              Florian, ich habe Dir nicht umsonst die Syntax von mysql_query() verlinkt und zusätzlich sogar noch gepostet:

                              <zitat>
                              resource mysql_query ( string Anfrage [, resource Verbindungs-Kennung] )
                              </zitat>

                              Das erste Argument ist, wie ich bereits schrieb, eine SQL-Anweisung. D.h. Du kannst nicht einfach einen Datenbanknamen übergeben - und erwarten, dass MySQL schon weiß, was es damit zu tun hat.

                              Machen wir es zum Anfang ganz hübsch einfach, statisch und unflexibel:
                              Wie ich Dir bereits schrieb, lautet die SQL-Anweisung zum Anlegen einer Datenbank, die den Namen "testdatenbank" tragen soll:

                              CREATE DATABASE testdatenbank

                              Somit ergibt sich für Dein PHP-Skript:

                                
                              <?php  
                              $host     = "localhost";  
                              $benutzer = "root";  
                              $passwort = "";             // Kein Passwort, nur ok zum lokalen Testen  
                              $dbname   = "testdatenbank";  
                                
                              if ($link = [link:http://www.php.net/manual/de/function.mysql-connect.php@title=mysql_connect]($host, $benutzer, $passwort)) {  
                                  echo "Verbindung erfolgreich hergestellt<br>\n";  
                              }  
                              else {  
                                  // weitere Skriptabarbeitung erübrigt sich  
                                  [link:http://www.php.net/manual/de/function.die.php@title=die]("Konnte keine Verbindung zum DB-Server herstellen");  
                                  // ok, ein Skript "sterben" zu lassen, ist keine gute Fehlerbehandlung.  
                              }  
                                
                              // Weise das SQL-Statement einer PHP-Variablen zu  
                              $query = "CREATE DATABASE " . $dbname;  
                                
                                
                              // der zweite Parameter von mysql_query() ist optional, ich lasse ihn  
                              // einfach weg. Näheres im Handbuch.  
                              if ([link:http://www.php.net/manual/de/function.mysql-query.php@title=mysql_query]($query) {  
                                  // Erfolgsmeldung  
                                  echo "Datenbank $dbname erfolgreich angelegt<br>\n";  
                              }  
                              else {  
                                  // andernfalls eine einigermaßen sinnvolle Fehlermeldung:  
                                  $ausgabe = "Fehler aufgetreten<br>\n"  
                                      // ergänzt um das SQL-Statement  
                                      . "SQL-Anweisung: " . $query . "<br>\n"  
                                      // und die Fehlermeldung von MySQL  
                                      . "MySQL-Fehlermeldung: " . [link:http://www.php.net/manual/de/function.mysql-error.php.php@title=mysql_error()];  
                              }  
                              ?>  
                              
                              

                              Freundliche Grüße

                              Vinzenz

                              1. Hallo an alle, »
                                Danke. habe jetzt konkreter verstanden was du meinst.

                                Mit freundlichen Grüssen
                                ------------------------
                                Stahl Florian
                                ------------------------

                                --
                                Das Leben ist hart, aber wir sind härter