wuildara wrote:Ich hatte eigentlich gehofft, ich bekomme richtige Hilfe statt zynischer Kommentare.
Dann hast du meine Antwort Missverstanden. Ich bin eigentlich kein zynischer Mensch, wenn auch gerne ein wenig mit Tendenz zur Ironie und Sarkasmus
wuildara wrote:Damit ist doch eine Fehlerabfrage eingebaut?
Stimmt, da hast du allerdings recht.
$conn kann nicht gleichzeitig false sein und die die() Abbruchanweisung durch den or Zweig überspringen. Ich weiß nicht ob es nicht sogar technisch unmöglich wäre, aber das wäre schon ein sehr schwerwiegender Bug in der PHP Version, der sicher bereits vor dem Release der Stable aufgefallen wäre.
Der von dir gezeigte Beispielcode funktioniert auf meiner XAMPP 1.8.1 Testumgebung (copy&paste) übrigens erwartungsgemäß:
Mit korrekten Parametern enthält $conn eine MySQL-Verbindungsressource, bei falschen Daten wird die Abbruchanweisung ausgeführt.
Es gibt nun also aus meiner Sicht vier mögliche Fehlerursachen:
- Der Fehler liegt in deinem eigenen Script versteckt (Zeichencodierung oder ähnliches)
(Sehr unwahrscheinlich, da so etwas in Kontrollstrukturen einen Parse Error vom Typ Syntax Error hervorrufen würde, der bei XAMPP 1.8.1 eine HTTP Status Code 500 Fehlerseite ausgeben würde) - PHP oder der MySQL Adapter zeigt ein nur auf deinem System beschränktes bzw. unter nur ganz bestimmten Bedingungen auftretendes Fehlverhalten.
(Das wäre tatsächlich in meiner 13 Jährigen Geschichte mit PHP das erste Mal, dass mir so etwas in einem solchen Ausmaß begegnen würde. Damit möchte ich nicht sagen, dass es unmöglich wäre) - Deine Deutung des Resultats ist unkorrekt (Bsp.: eine weiße Seite ist nicht gleichzusetzen mit einem Fehler)
- Deine hier gemachten Angaben entsprechen nicht der Wahrheit, sind unvollständig oder bestenfalls ungenau
Ich habe nicht die Informationsgrundlage entscheiden zu können, welcher Grund der richtige ist und möchte dir damit auch nicht zu Nahe treten. Vielleicht übersehe ich auch einfach nur etwas wesentliches.
wuildara wrote:Ist doch völlig egal. Eine funktionsfähige "alte" Software sollte doch auch mit einer neuen Umgebung funktionieren, wenn hier keine
gravierenden Kompatibilitätsthemen eingebaut wurden.
Es werden fast immer Änderungen vorgenommen, die die Kompatibilität betreffen. Eine Programmiersprache ist nunmal einem permanentem Wandel unterzogen um den ständig wechselnden Anforderungen gerecht werden zu können.
Aber da dein Beispielscript bei mir funktioniert, können wir das in diesem Fall wohl ausschließen.
Und dennoch meine ich meine Andeutung sehr ernst, doch endlich mal Fehlerkontrollstrukturen die PHP bereithält in dein Script einzubauen. Wenn bei dir $conn false zurückgibt, dann pfeif doch auf die bei dir scheinbar sowieso nicht funktionierende Abbruchbedingung und bau soetwas hier ein:
- Code: Select all
if(!$conn) {
echo 'MySQL Fehler '.mysql_errno(). ': ' .mysql_error();
}
mit freundlichen Grüßen,
Altrea