marco1234
Goto Top

MySQL Verbindung geht bei Aktualisierung der Seite verloren

Hallo zusammen

Ich habe ein sehr kurioses Problem.

Ich habe eine .php-Seite, welche in die Hauptseite included wird. Auf der Seite kann ich einen neuen Computer anlegen (sprich: PC-Name, Serien-Nr. User etc. in ein Formular eintragen). Zudem wird die Seite auch verwendet, um vorhandene Daten eines PCs zu verändern -> die Seite wird geöffnet, über eine GET- Variable wird die PC-ID übergeben und somit alle Daten aus der Datenbank gelesen und wieder ins entsprechende Formular eingetragen.

Die Verbindung zum MySQL Server wird über eine Funktion gelöst. Ich rufe die Funktion auf und gebe @mysql_connect via Return zurück und schreibe dies in eine Variable.

$db_link = connect_db();

Zu unterst auf der Seite wird dann die SQL Verbindung wieder mit mysql_close($db_link); geschlossen.
Das mache ich auf allen Seiten so und es funktioniert einwandfrei.

Nur auf dieser Seite, auf der ich die PCs eintragen und bearbeiten kann, kommt mir seit neustem bei jeder Aktion (Button, POST) folgende Fehlermeldung:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:\web\Apache\htdocs\hardwaredb\database\inc_client_new.php on line 260

Warning: mysql_close(): 16 is not a valid MySQL-Link resource

Zuerst trat das Problem nur auf, als ich einen bearbeiteten Computer speicherte und die Daten dann zur Kontrolle wieder ins Formular geladen werden. Jetzt tritt das Problem aber bei jedem Klick auf einen Button auf.

Ich kann mir nicht erklären, wieso ich die Verbindung zum SQL Server verliere. Die Verbindung wird immer schön geöffnet und getrennt…

Hat jemand eine Idee??

Thx and greezz
marco

Content-ID: 151509

Url: https://administrator.de/contentid/151509

Ausgedruckt am: 19.11.2024 um 17:11 Uhr

nxclass
nxclass 22.09.2010 um 12:07:06 Uhr
Goto Top
.. evtl. nimmst Du mal das '@' vor mysql_connect() weg.

Die Verbindung wird immer schön geöffnet und getrennt…
dann:
if ( $db_link = mysql_connect( *** ) ) {
    ***
    mysql_close($db_link);
}

user 'ODBC'@'localhost'
das sieht irgendwie falsch aus - prüfe mal dein Login / Passwort für die Datenbank
marco1234
marco1234 22.09.2010 um 13:07:37 Uhr
Goto Top
auch ohne @ funktioniert es nicht... :-S

Login und Username sind 1000% richtig! Es arbeiten noch ca. 20 andere Seiten ohne Probleme mit dieser Funktion.
godlie
godlie 22.09.2010 um 16:15:24 Uhr
Goto Top
Hallo,

wofür immer eine neue Connection aufmachen?
Da du ja sagst, dass du die seite includest, kann diese ja auch auf die variablen der zugreifenden zugreifen.
Ich würd nur in der Seite die alle included die Connection öffnen und dort auch wieder schliesen.
marco1234
marco1234 22.09.2010 um 16:55:54 Uhr
Goto Top
Habe alle rausgelöscht. Jetzt wird nur noch in der index.php die Funktion aufgerufen. Auf der PC-Seite funktioniert trotz dem noch nichts. Auf der Index Seite steht jetzt aber zu unterst auch eine Fehlermeldung.

Warning: mysql_close(): 6 is not a valid MySQL-Link resource in E:\web\Apache........."
nxclass
nxclass 22.09.2010 um 19:47:56 Uhr
Goto Top
Das '@' unterdrückt ggf. eine Fehlermeldung die Du sehen solltest.
Mit der if Bedingung wird geprüft ob auch ein Link/Handle/Objekt zurückgegeben wird. (oder NULL/false wenn ein Fehler aufgetreten ist )

Also: wenn die Verbindung aufgebaut wurde - und beim schließen der Verbindung am ende des Scripts die Meldung kommt: Verbindung existiert nicht (mehr) ... dann scheint die Verbindung schon geschlossen worden zu sein. Also stimmt im Ablauf deines Scripts etwas nicht.

Verfolge mal die Variable $db_link - ggf. wird diese überschrieben oder die Verbindung vorher schon geschlossen.
dog
dog 22.09.2010 um 21:02:23 Uhr
Goto Top
Du treibst hier grade ein Ratespiel mit uns:
"Ich hab in meinem Code eine Bombe vergraben, aber ich sage euch nicht wo."

Sorry, aber ohne Code posten geht es nicht - oder du nimmst dir XDebug und suchst selbst...
marco1234
marco1234 23.09.2010 um 07:41:35 Uhr
Goto Top
@nxclass
Ja, ich bekomme ja eine Resource id zurück. Ich habe mit der Suchfunktion von Dreamweaver alle Files nach $db_link durchsucht und alle unnötigen, zusätzlichen Verbindungen rausgelöscht. Sieht bis jetzt wieder gut aus.

@dog
ja ich weiss, ist ein bisschen doof. Aber ich kann nicht von über 50 .php Dateien den Code hier posten. Und nur schon von der index.php Datei und der inc_client_new.php-Datei gäbe es über 1000 Zeilen xD
nxclass
nxclass 23.09.2010 um 08:21:35 Uhr
Goto Top
Da fällt mir noch was ein - mysql_connect( *** ) hat noch ein Booleschen Zusatz Parameter - welcher den Aufbau einer neuen Verbindung erzwingt.
Lässt man den Parameter weg wird ggf. eine schon existierende Verbindung zurückgeliefert. (oder die alte Verbindung getrennt ?) - bin mir bei den alten Funktionen nicht ganz sicher.

d.h. Wenn Du eine 2. Verbindung aufbaust und diese wieder schließt - könnte dadurch die 1. auch mit geschlossen werden, da es sich um die selbe Ressource handelt.

Ich benutze schon seit geraumer Zeit nur noch PDO, da es viel Arbeit abnimmt und auch besser in das OOP passt.
marco1234
marco1234 24.09.2010 um 07:59:38 Uhr
Goto Top
Ja, dass könnte durchaus sein. Wobei es komisch ist, dass das Problem nur bei einer bestimmten .php-Seite aufgetreten ist und bei allen andern alles ohne Probleme (mit $db_link close) lief...