DB per PHP-Script erzeugen?

Hallo, bin noch recht neu in der PostgreSQL Entwicklung. Bisher verfüge ich über Erfahrungen in mySQL, 4D, FileMaker.

Meine Einstandsfrage lautet:
Ist es möglich per PHP-Script eine DB und/oder Schema zu erzeugen?

Ähnlich wie in PHP/mySQL:

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Verbindung fehlgeschlagen: ' . mysql_error());
}

$sql = 'CREATE DATABASE my_db';
if (mysql_query($sql, $link)) {
    echo "Schema my_db erfolgreich erzeugt\n";
} else {
    echo 'Schemaerzeugung fehlgeschlagen:: ' . mysql_error() . "\n";
}
?>

In der PHP-Doku, Abteilung PG habe ich bisher nur die Möglichkeit gefunden mit einer vorhandenen DB zu verbinden. Ich suche aber die Variante: Mit Host verbinden und dann die DB erzeugen. Beispiel aus der PHP Doku:

<?php $dbconn = pg_pconnect("dbname=mary"); //Verbindungsaufbau zu einer Datenbank namens "mary" $dbconn2 = pg_pconnect("host=localhost port=5432 dbname=mary"); // Verbindungsaufbau zu einer Datenbank namens "mary" auf "localhost" und port "5432" $dbconn3 = pg_pconnect("host=sheep port=5432 dbname=mary user=lamb password=foo"); // Verbindungsaufbau zu einer Datenbank namens "mary" auf dem Host // "sheep" mit Benutzername und Passwort $conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar"; $dbconn4 = pg_pconnect($conn_string); // Verbindungsaufbau zu einer Datenbank namens "test" auf dem Host // "sheep" mit Benutzername und Passwort ?>

Schon mal an das Absetzen eines SQL-Statements ala “CREATE DATABASE” gedacht? Klar ist jetzt recht simple aber nun ja wäre halt auch sehr einfach :wink: Entsprechende Berechtigung natürlich vorausgesetzt…

Noch was zum einlesen: http://www.postgresql.org/docs/9.3/static/sql-createdatabase.html

cu tb

Ja, das passt schon mal für’s Erste. Danke, das gefällt mir gut :slight_smile:

stehe etwas auf dem Schlauch bezüglich der Implementierung:

Schon mal an das Absetzen eines SQL-Statements ala “CREATE DATABASE” gedacht?

Brauche ich dafür nicht erst mal die DB-Connection?

Das ist richtig. Aber Du kannst Dich immer zu einer der Template-Datenbanken verbinden (z.B. template0)
Ausserdem wird beim Installieren auch immer mindestens eine normale Datenbank (typischerweise mit dem Namen “postgres”) angelegt.

Wenn ich das richtig verstehe

    • verbinde ich mit DB A1
  • sende ein execute ( resource $connection , string $stmtname , array $params )
  • und clone template1 (CREATE DATABASE …) in eine DB A2

OK. Danke. Wird probiert …