mysql_query() optionale Verbindungs-Kennung Pflicht?

FredRedHead

Well-known member
4 Mai 2006
166
7
Hi,
ich muss für einen Kunden ein Script installieren. Das Script baut die Mysql-Verbindung so auf:
$db=mysql_connect($dbserver,$dbuser,$dbpass);
mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$db);

dann kann ich per mysql_query("....",$db); aber auch per
mysql_query("...."); Queries ausführen. Doch bei dem Webserver, auf dem ich gerade arbeite, funktioniert nur noch Variante eins mit angegebener Verbindungskennung :roll:

Welcher Befehl in der PHP-Config ist dafür verantwortlich?
 
Wenn du nur eine Connection offen hast, ist der Parameter egal.
Anders ist es, wenn du mehrere Connections offen hast, da nimmt PHP die zuletzt geöffnete Connection.
 
theHacker schrieb:
Wenn du nur eine Connection offen hast, ist der Parameter egal.
Anders ist es, wenn du mehrere Connections offen hast, da nimmt PHP die zuletzt geöffnete Connection.

tja.. das habe ich bis heute auch gedacht :LOL:
ich habs überprüft, mit ,$db als Verbindungskennung geht die Query. Ohne den Zusatz ,$db kommt ein Fehler...

Irgendwas (sinnvolles) muss ich meinem Kunden ja sagen :ugly: Auch wenn er's nicht kapiert muss er es dann an den Hoster weiterleiten können.
 
Mach mal direkt nach dem DB-Connect ein
PHP:
$db=mysql_connect(...);
echo $db;
Wenn es die erste Connection is, müsstest du "resource identifier #1" ausgegeben bekommen. Ich weiß aber ned, ob man sich da 100%ig draufverlassen kann.
 
hm, da kommt tatsächlich kein #1 raus, sondern Resource id #5
Also werden da theroretisch 5 Verbindungen geöffnet? Nur liegt das definitiv an einer einstellung am Webserver.. Doch was für eine Einstellung öffnet unnötige MySQL-Connections? Auf allen Server auf denen ich je damit gearbeitet hats ja so funktioniert :yawn:

gibts da vllt ein workaround?

edit: auf einem anderen webserver, da läuft's, wird Resource id #3 ausgegeben. Daran liegts offensichtlich also doch nicht.
 
FredRedHead schrieb:
hm, da kommt tatsächlich kein #1 raus, sondern Resource id #5
Also werden da theroretisch 5 Verbindungen geöffnet?
Nicht unbedingt, auch ein mysql_query() liefert eine ResourceID, aber wenn dus ganz am Anfang machst, sollte nicht gleich die #5 kommen.

Erklärt das Problem aber immer noch nicht, weil du ja die letztgeöffnete Verbindung zur DB hast :think:

edit:
FredRedHead schrieb:
gibts da vllt ein workaround?
Ja, DB-Klasse :p
 
theHacker schrieb:
also ich ändere meinem kunde sicher nicht 50 oder 60 Datein, wenn er mich nur für eine Stunde Installationsarbeit bezahlt :ugly:
Muss er sich halt nen anderen Hoster suchen, aber hm.. den Grund würde ich schonmal gerne rausfinden.
 
FredRedHead schrieb:
tja.. das habe ich bis heute auch gedacht :LOL:
ich habs überprüft, mit ,$db als Verbindungskennung geht die Query. Ohne den Zusatz ,$db kommt ein Fehler...
Was kommt denn da genau für ein Fehler? Eventuell funktioniert ja mysql_error().

Laut php.net wird ohne Verbindungskennung die letzte verbindung genommen, existiert keine, mysql_connect ohne parameter aufgerufen. Daher denke ich, dass man das nicht in der config ändern kann...
 
FredRedHead schrieb:
Hi,
ich muss für einen Kunden ein Script installieren. Das Script baut die Mysql-Verbindung so auf:
$db=mysql_connect($dbserver,$dbuser,$dbpass);
mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$db);

dann kann ich per mysql_query("....",$db); aber auch per
mysql_query("...."); Queries ausführen. Doch bei dem Webserver, auf dem ich gerade arbeite, funktioniert nur noch Variante eins mit angegebener Verbindungskennung :roll:

Welcher Befehl in der PHP-Config ist dafür verantwortlich?
PHP:
  $db=mysql_connect($dbserver,$dbuser,$dbpass);
  mysql_connect($dbserver,$dbuser,$dbpass);
  mysql_select_db($dbname,$db);
Wiso 2x connecten?
Ohne parameter wird PHP auf mysql_connect($dbserver,$dbuser,$dbpass); zurückgreifen, dafür wurde alledings keine DB ausgwählt. (mysql_select_db($dbname,$db); wählt eine DB für die Verbingung mit Kennung)
demnach fehlt ein
mysql_select_db($dbname);

Denke das ist es ;) Warum das auf einigen Servern ging weiß ich jetzt allerdings auch nicht...
 
wie gesagt gibt es ein paar query im stile von mysql_query("...",$db); und im stile von mysql_query("..."); Der Inhalt sollte nicht von interesse sein.
 
FredRedHead schrieb:
Da kommt der Fehler No Database selected
hmm von dem her muss es aber fast das sein...
Wenn du anstatt
PHP:
$db=mysql_connect($dbserver,$dbuser,$dbpass);
mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$db);

nur
PHP:
$db=mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$db);
machst geht es dann? Weiß jetzt grade nicht ob man dann noch ohne die Verbindungskennung darauf zugreifen kann aber ansich spricht nichts dagegen.
 
mir ging es drum das man glaube bei einem mysql_query direkt im query angeben kann in welcher databse er schauen soll. dann bräuchte man theoretisch kein mysql_select_db
 
White schrieb:
mir ging es drum das man glaube bei einem mysql_query direkt im query angeben kann in welcher databse er schauen soll. dann bräuchte man theoretisch kein mysql_select_db

achso, deshalb.. sorry :roll:
prob ist, das ich eben nur queries im stile von select * from table... habe.

@Goltergaul: Hab ich auch schon davor probiert. geht nicht. Geht nur wenn ich die DB explizit mit ,$db in jeder Query anspreche.. aber das ist mir zu viel arbeit alle datein zu ändern :ugly:
 
probier mal folgendes:
Code:
mysql_connect($dbserver, $dbuser, $dbpass, true);
$db=mysql_connect($dbserver, $dbuser, $dbpass, true); 
mysql_select_db($dbname);
mysql_select_db($dbname, $db);