PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wohl zu müde...



7crystal7
19.03.2004, 05:55
Hallo Leute,

ich habe folgenden Code
mysql_select_db($db)\n or (mysql_query("create database $db", $conn) $stage = 1);

und möchte das wenn die Datenbank nicht selektiert werden kann diese erstellt wird und die Variable
$stage auf 1 gesetzt wird.. Am besten soll nach dem erstellen die Datenbank nochmals selektiert werden.

Was mache ich da falsch?

Danke
Babsi

stormjedi
19.03.2004, 11:49
also so eine schreibweise hab ich noch nie gesehen,

wo ist nach dem mysql_query() ein semikolon?
was ist das n hinter dem ($db)?

7crystal7
19.03.2004, 12:29
ich habs jetzt mal so gemacht, besser oder?


mysql_select_db($db)or mysql_query("create database $db", $conn); $stage = 1;mysql_select_db($db);

Danke
Babsi

st0n3
19.03.2004, 12:35
Hallo 7crystal7,

hier versuch es mal mit der Funktion:
function select_db($db, $conn)
{
$foundDB = false;
$dbs = mysql_list_dbs();

for ($i = 0; $i < mysql_num_rows($dbs); $i++) {
$dbname = mysql_db_name($dbs, $i);

if ($dbname == $db) {
$foundDB = true;
break;
}
} // for

if (!$foundDB) {
mysql_create_db($db, $conn)
OR die(mysql_error() . '<br>can not create database');
}

return mysql_select_db($db, $conn);
}

Die Funktion mysql_list_db (http://de.php.net/manual/de/function.mysql-list-dbs.php) listet erstmal alle vorhandenen Datenbanken.
$dbs = mysql_list_dbs();Danach wird mit einer FOR schleife nach der zu selektierenden Datenbank gesucht. Benutzt werden hierfür zwei Funktionen: mysql_num_rows (http://de.php.net/manual/de/function.mysql-num-rows.php) und mysql_db_name (http://de.php.net/manual/de/function.mysql-db-name.php). Ist die Datenbank vorhanden wird die Variable $foundDB den Boolscher Wert true zugewiesen und die Schleifen verlassen.
for ($i = 0; $i < mysql_num_rows($dbs); $i++) {
$dbname = mysql_db_name($dbs, $i);

if ($dbname == $db) {
$foundDB = true;
break;
}
} // forWurde die Datenbank nicht gefunden, wird eine mit Hilfe der Funktion mysql_create_db (http://de.php.net/manual/de/function.mysql-create-db.php) erstellt.
if (!$foundDB) {
mysql_create_db($db, $conn)
OR die(mysql_error() . '<br>can not create database');
}Danach wird die Datenbank -falls bis dahin alles glatt gelaufen ist- selektiert. Dazu verwenden wir die Funktion mysql_select_db (http://de.php.net/manual/de/function.mysql-select-db.php), die true bei Erfolg oder false bei einem Fehlerfall zurückgibt.

gruss st0n3

meikel
19.03.2004, 14:38
mysql_select_db($db)or mysql_query("create database $db", $conn); $stage = 1;mysql_select_db($db);
Die Idee ist schon nicht schlecht. Allerdings funktioniert das so nicht. Nicht nur deshalb, weil Du für mysql_query erst mal eine DB selektiert haben mußt: die Syntax ist auch falsch

1. versuchen, die neue DB zu erzeugen. Ist das möglich, stage = 1
2. die DB selektieren
3. ist dies nicht möglich, muß das Script sterben, weil Du ja sicher mit der DB was vorhast.

Damit das Script nicht wegen wüster Fehlöermeldungen stirbt, sind ein paar @ und ein paar IFs erforderlich.



# connect steht schon

$stage = (@mysql_create_db($db)) ? 1 : ''; # 1.
if (! @mysql_select_db ($db)) # 2.
die ($db.' ist nicht selektierbar'); # 3.

# weiter im Script