DB-Verbindung aufbauen mit define() Konstanten

CoverUnder

Mitglied
Hallo,

einmal mehr stehe ich leider vor einem Problem...
Ich versuche eine Datenbank-Verbindung aufzubauen mit der Hilfe einer config-Datei, in der die einzelnen DB-Angaben mit define() definiert werden.


Das ist die configure.php
PHP:
// define our database connection
  define('DB_SERVER', 'localhost'); // eg, localhost - should not be empty for productive servers
  define('DB_SERVER_USERNAME', 'user');
  define('DB_SERVER_PASSWORD', 'pwd');
  define('DB_DATABASE', 'db');

Diese Datei kann bzw. sollte ich nicht ändern - es muss also mit dem define() auf jeden Fall funktionieren.

Hier die php Datei, in der ich die Verbinung aufbauen möchte:
PHP:
// Datenbankverbindung herstellen
include ('configure.php');
$mysql = mysql_connect('DB_SERVER', 'DB_SERVER_USERNAME', 'DB_SERVER_PASSWORD');
$selectdb = mysql_select_db('DB_DATABASE');

if(!$mysql) {
echo("Keine Verbindung zum MySQL-Server m&ouml;glich<br/ >".mysql_error());
}
if(!$selectdb) {
echo("Konnte Datenbank nicht Ausw&auml;hlen<br />".mysql_error());
}

Zurück kommt:
Keine Verbindung zum MySQL-Server möglich
Access denied for user ''@'localhost' to database 'DB_DATABASE'Konnte Datenbank nicht Auswählen
Access denied for user ''@'localhost' to database 'DB_DATABASE'

Rufe ich die Daten allerdings so auf:
PHP:
echo DB_SERVER;
werden alle Angaben problemlos wiedergegeben. Nur im Zusammenhang mit der Datenbank-Verbindung will es nicht funktionieren.

Weiß jemand, woran das liegen könnte?
Über einen Tipp wäre ich wirklich dankbar.
 
Aaah - peinlich :D
Vielen Dank! So simpel kann es manchmal sein...

Jetzt habe ich es so:
PHP:
$mysql = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
$selectdb = mysql_select_db(DB_DATABASE);

Nur leider scheint das mit dem Auswählen der Datenbank noch nicht hinzuhauen, denn es kommt der Fehler:
No database selected

Es kommt da auch nur dieser Fehler und nicht auch noch mein "Konnte Datenbank nicht Ausw&auml;hlen"-Satz...

Liegt das nach wie vor am define() oder mache ich beim Auswählen der Datenbank grundsätzlich etwas falsch? In anderen Scripts, in denen ich nicht mit define() arbeite(n muss), funktioniert diese Art die DB zu wählen normalerweiße einwandfrei... :-/

Nachtrag:
auch mit
PHP:
$selectdb = mysql_select_db(DB_DATABASE,$mysql);
mag es nicht klappen und wenn ich mir
PHP:
echo $selectdb
ausgeben lasse, kommt eine 1 zurück

Nachtrag2:
am define() kann es eigentlich nicht mehr liegen... füge ich den Namen der DB direkt in mysql_select_db(); ein, kommt nämlich der selbe Fehler, als wenn ich es über die Konstante von define(); mache... Aber sonst funktioniert diese Art des Verbindungs-Aufbaus auch immer :-/ verwende ich eine andere config-Datei, eine ohne define(); sondern mit normalen Variablen, funktioniert es auch wieder problemlos... *am Kopf kratz*
 
Zuletzt bearbeitet:
Du musst als 2. Parameter der Funktion mysql_select_db() noch deine Verbindung angeben:
PHP:
$mysql = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
$selectdb = mysql_select_db(DB_DATABASE,$mysql);

edit: hast du ja auch schon versucht...

edit2: also bei funktioniert folgendes Problemlos:
PHP:
define('DB_SERVER_USERNAME', 'root');
define('DB_SERVER','localhost');
define('DB_SERVER_PWD','');
define('DB_DATABASE', 'test');

$con = mysql_connect(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PWD) or die (mysql_error());
$selDB = mysql_select_db(DB_DATABASE) or die (mysql_error());
 
Zuletzt bearbeitet:
Danke fuer deine Hilfe! Aber wirklich seltsam, dass das bei dir problemlos funktioniert und bei mir noch nach wie vor der selbe Fehler kommt /-: ich bin wirklich ratlos

Kann der Hund auch irgendwo noch im mysql_query begraben sein?

Die Abfrage lautet dann so:
PHP:
$sql="SELECT ... FROM ... ";
$res = mysql_db_query($mysqldb, $sql, $mysql) or die(mysql_error()); 
while ($row = mysql_fetch_assoc($res)) {


edit:
AH!! Habe es gefunden. Ich Depp. Oben nenne ich es $selectdb und unten dann $mysqldb... Oh man. Das wäre hiermit gelöst. ABER... :-/

Access denied for user 'dbuser'@'localhost' to database '1'

Das kommt jetzt :-/
Die Verbindungsdaten sind aber unter Garantie richtig.


Nachtrag:
Ich habe es jetzt zum Laufen gebracht, in dem ich die define() Konstanten nicht direkt in die Verbindung einbaue, sondern es so mache:

PHP:
$mysqlhost = DB_SERVER;
$mysqluser = DB_SERVER_USERNAME;
$mysqlpassword = DB_SERVER_PASSWORD;
$mysqldb = DB_DATABASE;

$db = mysql_connect($mysqlhost, $mysqluser, $mysqlpassword); 
$selectdb = mysql_select_db($mysqldb);
 
Zuletzt bearbeitet:
mysql_db_query() erwartet als ersten Parameter den Namen der Datenbank als String. Du übergibst ihr aber das bool'sche Ergebnis von mysql_select_db(). Also entweder muss es heißen
PHP:
$res = mysql_db_query(DB_DATABASE, $sql, $mysql);
oder du nutzt sinnvollerweise
PHP:
$res = mysql_query($sql, $mysql);
wenn du anfangs schon die DB auswählst.
 
Zurück