Fehler bei mysql_select_db() innerhalb einer Funktion

sheeba1507

Erfahrenes Mitglied
Hi,

da ich mit mehreren Datenbanken arbeite, wollte ich die Selektierung
der jeweils benötigten Datenbank über eine Funktion regeln.

Die Codierung (Auszug) sieht wie folgt aus :

settings.inc.php
PHP:
$db_host = "localhost";
$db_root = "s000w000";
$db_pass = "xxxxxxxx";
$db1 = "s000w000_1";
$db2 = "s000w000_2";
// weitere Datenbanken
if($_SERVER['SERVER_NAME'] == 'localhost') 
  {
  $dbconn = mysql_connect("localhost","root","", true) or die(mysql_error());
  $suffix = "";
  }
else 
  {
  $dbconn = mysql_connect($db_host,$db_root,$db_pass, true) or die(mysql_error());
  $suffix = "usr_";
  }
function dbselect ($dbname)
  {
  mysql_select_db($suffix.$dbname, $dbconn) or die(mysql_error()); //Error-Zeile
  return;
  }
beispiel.php
PHP:
include ("include/settings.inc.php");
dbselect ($db2);
$sqleintrag = "INSERT INTO $tabelle (var) VALUES ('$var')";
mysql_query($sqleintrag, $dbconn) or die(mysql_error());
Leider erhalte ich die folgende Fehler-Meldung :
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in E:\Offline\xampp\htdocs\include\settings.inc.php on line nn

Habe ich hier irgendetwas übersehen oder ist es generell nicht erlaubt,
mysql_select_db() innerhalb einer Funktion auszuführen ?

Bin für jeden Hinweis dankbar.

Gruß, Mike
 
Natürlich kann mysql_select_db() an jeder beliebigen Stelle eingesetzt werden, das Problem bei dir ist, deine Funktion hat keine Ahnung von den Variablen außerhalb.

Entweder du übergibst deiner Funktion zusätzlich noch $suffix und $dbconn oder du schreibst alles relevante in die Funktion. Eine andere Möglichkeit wäre die Verwendung von globalen Variablen, aber davon rate ich ab!
 
Hi,

sorry für die späte Meldung, aber ich hatte vollkommen übersehen, daß hier noch
ein offener Thread von mir besteht.

Mittlerweile habe ich das Problem wie folgt gelöst :

settings.inc.php
PHP:
// Datenbank-Verbindungen
function dbconnect ($db_select)
  {
  $db_host = "localhost";
  $db_root = "s000w000";
  $db_pass = "xxxxxxxx";
  $db_name = "s000w000_";
  if($_SERVER['SERVER_NAME'] == 'localhost') 
    {
    mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db($db_name.$db_select) or die(mysql_error());
    }
  else 
    {
    mysql_connect($db_host,$db_root,$db_pass) or die(mysql_error());
    mysql_select_db("usr_".$db_name.$db_select) or die(mysql_error());
    }
  return;
  }
beispiel.php
PHP:
include ("include/settings.inc.php");
dbconnect ("2");
$sqleintrag = "INSERT INTO $tabelle (var) VALUES ('$var')";
mysql_query($sqleintrag) or die(mysql_error());
Somit hat sich das Problem erledigt.
Trotzdem Danke für eure Hilfe.

Gruß, Mike
 
Zurück