Subject Re: fbird_add_user and fbird_service_attach (create db without isql, WORKS)
Author Robert
--- In firebird-php@yahoogroups.com, Lester Caine <lester@l...> wrote:
> Robert wrote:
>
> > I was reading in the forum that with PHP5 you can create a
database in
> > a query statement has anyone have an example of working code?
>
> Not with Firebird.
> I use the isql path for tikipro and build the database that way.
You
> need to be connected to a database before you can actually do any
other
> SQL, so unless you bounce of the security database, which I would
not
> recommend in php code, then you need a 'database less' way of
creating it.
>
> --
> Lester Caine
> -----------------------------
> L.S.Caine Electronic Services

Actually I got everything working now without using isql at all here
is my code that creates the user account and the DB without isql. I'm
using PHP5.0.l and yes this code works perfectly for me, I had to
actually read the CVS to find all of this out.

/* These are temporary values, that will only be used during install
*/
$tmp_user = 'sysdba';
$tmp_pass = 'masterykey';
/* End of Temp */

// These are params from my config file (Some are not used here)
// Path where firebird Database will reside
$data_path = "/data/";
// Apache's Document root
$http_path = "/wwwroot/htdocs/";
// Name of program's root directory
$doc_root = "challenge";
// Databse Name used by program
$dbname = "test";
// Database host
$dbhost = "localhost";
// User Name used to connect to program database
$dbuser = "phpadmin";
// Password used to connect to program database
$dbpass = "masterkey";
// Recreate Database switch
$recreatedb = 1;
// Ensure db only gets created if needed
$createdb=1;

if(!($service=fbird_service_attach($dbhost,$tmp_user,$tmp_pass)))
die('Unable to Connect to FireBird Serviec Manager!');

If(!($userinfo=fbird_server_info($service,IBASE_SVC_GET_USERS)))
die('Unable to Gather FireBird User information!');

foreach ($userinfo as $user)
$adduser = ($user['user_name']==strtoupper($dbuser)) ? 0 : 1;

if ($adduser) {
if(!fbird_add_user($service, $dbuser, $dbpass))
die('Unable to add User!');
}
fbird_service_detach($service);

$strconnect = "$dbhost:".$data_path.$dbname.".fdb";

if ($db=fbird_connect($strconnect, $dbuser, $dbpass, 'ISO8859_1', 0,
1)) {
if ($recreatedb) {
if(!(fbird_drop_db($db)))
die('Unable to Drop Database!');
}
else
$createdb=0;
fbird_close($db); // May not close may use to prep DB
}

if ($createdb) {
$sql = "CREATE DATABASE '".$data_path.$dbname.".fdb'
USER '$dbuser' PASSWORD '$dbpass'
PAGE_SIZE 8192
DEFAULT CHARACTER SET ISO8859_1; \n";

if(!($db=fbird_query(IBASE_CREATE, $sql)))
die('Unable to Create Database!');

fbird_close($db); // May not close may use to prep DB
echo "The database: $dbname, was created successfully.<br/>";
}

echo "Database Ready!"