2009-05-21 6 views
1

Gelöst: Ich schrieb und getestet ein PHP-Skript auf dem lokalen Server. (Nichts Besonderes, nur 2 aufeinanderfolgende SQL-Einfügungen in der gleichen Datenbank, aber unterschiedliche Tabellen).SQL-Abfrage funktioniert auf Testserver aber nicht leben ... was könnte der Unterschied sein?

Beide Server laufen PHP5 & MYSQL 5.

auf dem lokalen Server werden beide Abfragen korrekt verarbeitet.

Auf dem Live-Server funktioniert nur die erste Abfrage, aber nicht die zweite und ich kann nicht herausfinden, warum. Hier

ist der Code:

$sql_login = "INSERT INTO logintbl 
       (...) 
      VALUES (...)"; 
    $result_login = mysqli_query($this->connect, $sql_login); 

    # Fill contact details 
    $sql_contactD = "INSERT INTO contactDetails 
        (...) 
     VALUES (...)"; 
    $result_contactD = mysqli_query($this->connect, $sql_contactD); 

Auf meinem lokalen Server, beide Abfragen return true und die Daten werden in der Datenbank hinzugefügt.

Auf meinem Live-Server funktioniert die erste Abfrage wie erwartet, aber die zweite Abfrage schlägt ohne Fehlermeldung fehl.

Natürlich sind die Tabellenstrukturen auf beiden Servern identisch. Beide Tabellen befinden sich in derselben Datenbank und der Benutzer verfügt über ausreichende Rechte für die Datenbank.

Irgendwelche Hinweise darauf, was könnte falsch sein?


Bearbeiten 1: Berechtigungen: Ja, der Benutzer verfügt über ausreichende Berechtigungen für beide Tabellen.


Edit 2: Ich sehr dumm fühlte, aber im Anschluss an James' Rat mysqli_error() zu prüfen, fand ich heraus, dass der Produktionsserver Groß- und Kleinschreibung in Bezug auf Tabellennamen war, im Gegensatz zu meinem Testserver, und dass Es konvertierte den ursprünglichen Namen meiner Tabelle (contactDetails) in Kleinbuchstaben (Kontaktdetails).

Vielen Dank an alle für Ihre Hilfe.

+0

Haben Sie Ihr mysql-Protokoll auf eine Fehlermeldung überprüft? –

+0

Versuchen Sie auch "SHOW WARNINGS", nachdem Sie die Abfrage ausgeführt haben, die nicht funktioniert. Dadurch werden Informationen zu Warnungen zurückgegeben, die weniger gravierend als Fehler sind und eine Nachricht nur anzeigen, wenn Sie nach einer Nachricht suchen. –

+6

Überprüfen Sie auch die Ausgabe von mysqli_error(). Haben die Test- und Produktionsserver unterschiedliche Einstellungen für magische Anführungszeichen?Andere Einstellungen? –

Antwort

0

Beantwortung meiner Frage, weil es wie der einzige Weg, sieht es richtig zu schließen:

ich sehr dumm fühle, aber folgenden James' Rat der Überprüfung mysqli_error(), ich, dass der herausfand, Produktionsserver war Groß- und Kleinschreibung in Bezug auf die Tabellennamen, im Gegensatz zu meinem Testserver, und dass es umgewandelt der ursprüngliche Name meiner Tabelle (contactDetails) (contactdetails) in Kleinbuchstaben.

0

Haben Sie die Berechtigungen in Ihrer Produktionsumgebung überprüft? Bedeutung Haben Sie überprüft, dass Sie Zugriff auf contactDetails haben?

+0

Ja, tut mir leid, hätte ich angeben sollen, aber ja, die Berechtigungen sind ausreichend. – Sylverdrag

0

Haben Sie versucht, $ sql_contactD auf einen Bildschirm (oder eine Webseite) zu drucken, und führen Sie dann genau die gleiche Abfrage im MySQL Query Browser aus?

Verwandte Themen