Wird denn überhaupt versucht, eine neue Verbindung aufzubauen - oder von dir unbemerkt die zuvor erstellte weiter benutzt, und deshalb gibt es an dieser Stelle gar keinen Fehler?
Doch schon. Im Einsatz sind das ja auch Connections zu unterschiedlichen Datenbanken, ich hatte nur die Verbindungsparameter jetzt weggelassen.
Wenn ich das wie von dir oben skizziert teste, dabei den vierten Parameter von mysql_connect auf true setze, um eine neue Verbindung zu erzwingen - und dann beim zweiten Mal bewusst ein falsches Passwort nutze, bekomme ich an dieser Stelle genau deshalb von mysql_error Mecker, wie zu erwarten.
Hmm, also ich fände es auch sinnvoll wenn es so ablaufen würde, aber mir klappt das leider nicht, oder ich mach irgendwo was falsch.
Aber selbst bei zwei Verbindungen - mit true Parameter - auf die selbe DB klappt das bei mir nicht:
define("MYSQL_HOST", "localhost");
define("MYSQL_USER", "user");
define("MYSQL_PASSWORD", "password");
$con1 = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD);
if(!$con1)
echo "Error1: ".mysql_error();
$con2 = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD."falsch", true);
if(!$con2)
echo "Error2: ".mysql_error();
Die Dokumentation von mysql_error() lautet auch so: "gibt den Fehler der letzten _hergestellten_ aka erfolgreichen Verbindung zurück". $con1 ist die letzte hergestellte, also bezieht sich echo "Error2: ".mysql_error(); auf diese (zumindest bei mir, getestet mit php 5.2.0).
Eine kleine Abwandlung des Beispiels:
$con1 = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD);
if(!$con1)
echo "Error1: ".mysql_error();
mysql_select_db("datenbank-die-es-nicht-gibt", $con1);
$con2 = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD."falsch", true);
if(!$con2)
echo "Error2: ".mysql_error();
Bei Error2 kommt nun eine Fehlermeldung die sich auf die fehlerhafte Datenbankauswahl bezieht, nicht etwa auf den zweiten Verbindungsaufbau.