PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql_select_db - wo liegt der Fehler?


wti
24.04.2007, 10:03:19
ich habe eine Anwendung mit zwei Datenbanken. Auf localhost funktioniert der Zugriff - wenn ich sie auf den Server lade nicht mehr.

DB I
connection68.inc

<?PHP
# developing environment
###$dbname68 = 'dvag'; $hostname68='localhost'; $username68='root'; $password68 ='';
# production environment
$dbname68 = 'db68'; $hostname68='db68.puretec.de'; $username68='p68';$password68 ='xxx';

function connect()
{
global $connection68, $dbname68, $hostname68, $username68, $password68;

If (!$connection68=mysql_connect($hostname68, $username68, $password68))
{
echo "Die Verbindung zum ",$hostname68," konnte nicht hergestellt werden." ;
exit;
}
else
echo "" ;
return $connection68;
}

$no_select_db = true;
connect();


DB II
connection129.inc

<?PHP
# developing environment
###$dbname129 = 'community'; $hostname129='localhost'; $username129='root'; $password129 ='';
# production environment
$dbname129 = 'db129'; $hostname129='db129.puretec.de'; $username129='dbo129';$password129 ='xxx';


function comm_connect()
{
global $connection129, $dbname129, $hostname129, $username129, $password129;

If (!$connection129=mysql_connect($hostname129, $username129, $password129))
{
echo "Die Verbindung zum ",$hostname129," konnte nicht hergestellt werden." ;
exit;
}
else
{
echo "" ;
}
return $connection129;
}

$no_select_db = true;
comm_connect();


Die Steuerungsdatei (index.php) enthält dann am Anfang:
# db connection for old system
include ("_general/connection68.inc");
# db connection for community
include ("_general/connection129.inc");

mit include wird dann eine weitere Datei aufgerufen, die die Ausgabe erstellen soll:
...
case home: {include ("home1.php"); break; }
...


Ausgabe in home1.php
...
<td width="468" bgcolor="#FFCC99" colspan="2">
<b><font color="#FFFFFF" size="-1">&nbsp;Letzter
Webverzeichnis-Eintrag:&nbsp;</font></b>

<?
# explizite Auswahl der Verbindung
if (!mysql_select_db($dbname68))
{
mysql_select_db($dbname68, $connection68) or die ("Datenbank $dbname68 nicht ge&ouml;ffnet");
if (mysql_errno()) echo mysql_error();
}
$sql_select ="SELECT ID from web" ;
$res = do_query($sql_select) ;
$count = mysql_num_rows($res);


Print (" <font color=#000000 size=\"2pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>$count</b> Links!</font>");

?>
</td>
...


Was mache ich falsch???
thx

MatMel
24.04.2007, 18:55:44
- [ PHP ] Tags um den Code machen - am besten noch richtig einrücken ;)
- Fehlermeldungen (wenn vorhanden) posten
- eigene Vermutungen/Versuche zur Behebung posten

wti
24.04.2007, 19:42:25
- [ PHP ] Tags um den Code machen - am besten noch richtig einrücken ;)
- Fehlermeldungen (wenn vorhanden) posten
- eigene Vermutungen/Versuche zur Behebung posten

hallo MatMel,
die PHP-Tags sind umzu - hatte ich nur nicht mit kopiert.
eingerückt habe ich das Coding auch - ist irgendwie verloren gegangen - das mache ich immer
Fehlermeldungen bekomme ich nur wenn ich mysql_error ausgebe
ich habe einige Felder ausgegeben und es sieht so aus als wenn die global-variablen nicht richtig zugeordnet werden. Es kann doch nicht angehen, dass man zwar mit mehreren Datenbanken arbeiten kann, aber ein einheitlicher Benutzer vorliegen muss --- oder???
Die Anzeige der Variablen mit:
echo "<br>", "--68--", $dbname68, "-", $connection68, "-", $dbname68, "-", $hostname68, "-", $username68, "-", $password68, "<br>", "--129--", $dbname129, "-", $connection129, "-", $dbname129, "-", $hostname129, "-", $username129, "-", $password129, "<br>", "--", $connection68, "<br>", "--", $connection129, "--";
# explizite Auswahl der Verbindung
# if (!mysql_select_db($dbname68))
# {
mysql_select_db($dbname68, $connection68) or die ("Datenbank $dbname68 nicht ge&ouml;ffnet");
if (mysql_errno()) echo "<br>", mysql_error();
# }

Das Ergebnis ist dann:
Letzter Webverzeichnis-Eintrag:
--68--db40652362-Resource id #3-db40652362-db68.puretec.de-p7636238-pwd40
--129--db175885299-Resource id #8-db175885299-db129.puretec.de-dbo175885299-pwd129
--Resource id #3
--Resource id #8--
Access denied for user: 'dbo175885299@%' to database 'db40652362'1146:Table 'db175885299.web' doesn't exist

Auf localhost weist die Anzeige als Benutzer root aus und ein password ist nicht definiert. Der sql_errno ist dann "Resource id #4"

Hilft dir/euch das weiter?
thx

MatMel
24.04.2007, 19:56:24
die PHP-Tags sind umzu - hatte ich nur nicht mit kopiert.
Ich meinte die PHP Tags hier aus dem Forum. Eckige Klammer auf PHP und eckige Klammer zu (deswegen hatte ich die Leerzeichen gelassen ;)). Damit wird der Code um einiges besser lesbar und außerdem bleiben die Einrückungen erhalten.

So zum Problem. Die Variablen scheinen ja laut der Ausgabe korrekt definiert zu sein.
Kann es nicht sein, dass einfach die Fehlermeldung

Access denied for user: 'dbo175885299@%' to database 'db40652362'1146:Table 'db175885299.web' doesn't exist

zutrifft und die Tabelle einfach schlicht und einfach nicht auf dem Server existiert? Oder du dich evtl bei dem Namen vertippt hast - sind immerhin einige Nummern drinne ...?

wti
24.04.2007, 20:39:39
Ich meinte die PHP Tags hier aus dem Forum. Eckige Klammer auf PHP und eckige Klammer zu (deswegen hatte ich die Leerzeichen gelassen ;)). Damit wird der Code um einiges besser lesbar und außerdem bleiben die Einrückungen erhalten.

So zum Problem. Die Variablen scheinen ja laut der Ausgabe korrekt definiert zu sein.
Kann es nicht sein, dass einfach die Fehlermeldung

zutrifft und die Tabelle einfach schlicht und einfach nicht auf dem Server existiert? Oder du dich evtl bei dem Namen vertippt hast - sind immerhin einige Nummern drinne ...?


sorry, habe bisher noch keine Foren gebraucht, aber danke für den Tipp.

Leider muss die Ursache anderswo liegen. Wenn ich die DB-Definitionen vertausche (connection68.inc und connection129.inc) funktioniert diese Anzeige, aber es hakt anderswo. Es funktioniert scheinbar nur die zuerst definierte Datenbank!?!?!?


# db connection for community
include ("_general/connection129.inc");
# db connection for old system
include ("_general/connection68.inc");


Anzeige:
Letzter Webverzeichnis-Eintrag:
--68--db40652362-Resource id #5-db40652362-db68.puretec.de-p7636238-pwd40
--129--db175885299-Resource id #3-db175885299-db129.puretec.de-dbo175885299-pwd129
--Resource id #5
--Resource id #3-- 1033 Links!