Sponsor-Board.de

Normale Version: PDO SQLite Problem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend,

ich arbeite derzeit wieder an einem PHP Projekt.
Als Datenbanksystem verwende ich SQLite, was sich auch nicht durch MySQL o.ä. ersetzen lässt.
Ich entwickle lokal, das heißt auf einem XAMPP Server welcher auch SQLite unterstütz (phpinfo()).

Ich habe eine Datenbankklasse in der die Verbindung mittels PDO zur Datenbank hergestellt wird, was auch einwandfrei funktioniert.
Daten kann ich ohne Probleme aus der Datenbank auslesen, allerdings hakt es derzeit beim updaten von Datensätzen. Beim ausführen des Scripts bekomm ich einfach einen Runtimeerror:

Zitat:
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\projekt\lib\classes\model.class.php on line 50


So sieht derzeit die Methode aus, die fürs updaten zuständig ist:

PHP-Code:
public function updateUserData ($email$password$hash,$firstname$lastname$uid) {
        
$this->setSql("UPDATE `users` SET `email`= :email, `password`= :password, `hash`= :hash, `firstname`= :firstname, `lastname`= :lastname WHERE `uid`= :uid;");
        
$query $this->prepare();
        
$query->bindValue(":email"$email);
        
$query->bindValue(":password"$password);
        
$query->bindValue(":hash"$hash);
        
$query->bindValue(":firstname"$firstname);
        
$query->bindValue(":lastname"$lastname);
        
$query->bindValue(":uid"$uid);
        
$query->execute();
    } 


Und so sieht die entsprechende setSql und prepare Methode im DB Wrapper aus. Der DB Wrapper vererbt an das Model weiter Wink.

PHP-Code:
public function setSql ($sql) {
        
$this->sql $sql;
    }

public function 
prepare () {
        
$this->query $this->pdo->prepare($this->sql);
        return 
$this->query;
    } 


Ich steh grad einfach auf dem Schlauch denn das will einfach nicht funktionieren ...
Würde mich freuen, wenn sich jemand finden würde der meinen Fehler entdeckt ^^

MfG

was ist genau die Zeile 50 in der model.class.php (am besten die ganze methode und nochmal zeigen welche Zeile, Zeile 50 ist Biggrin
Das was du siehst ist die komplette Methode und die Zeile 50 ist die abschließende geschweifte Klammer Wink.

EDIT:
So wie ich das sehe, dürfte das Problem aber nicht an meinem Code liegen, da derselbe Code mit MySQL einwandfrei funktioniert, nur eben bei SQLite nicht will. Aktuelle SQLite Version ist auf 3.7.7.1 und die Datenbank verwalt ich mit dem Firefox Plugin SQLite Manager.
In diesem Manager funktioniert der Update Query einwandfrei ...
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\projekt\lib\classes\model.class.php on line 50

Doch eindeutig. Endlosschleife?

Liegt nicht an PDO. Externe Aufrufe zählen nicht zur Laufzeit.

Zitat:
Das was du siehst ist die komplette Methode und die Zeile 50 ist die abschließende geschweifte Klammer Wink.

Hört sich nach nem Fehlenden Simikolon an.

Nein, es ist keine Schleife enthalten.
PDO zählt nicht als externer Aufruf, da es eine Klasse von PHP ist Wink
Und ein fehlendes Semikolon ist es ebenfalls nicht, da er sonst einen anderen Fatal Error ausgeben würde und ich extra dies nochmal gecheckt habe Wink.

MfG

Mr-Trust schrieb:
Nein, es ist keine Schleife enthalten.
PDO zählt nicht als externer Aufruf, da es eine Klasse von PHP ist Wink
Und ein fehlendes Semikolon ist es ebenfalls nicht, da er sonst einen anderen Fatal Error ausgeben würde und ich extra dies nochmal gecheckt habe Wink.

MfG


Und diese greift nicht auf einen Datenbankserver zu? So ist das also Biggrin

Oder glaubst du PDO hat einen internen Fehler?

Mach dein PDO Statement zum testen in ne andere Datei ohne anderen Code und du wirst sehen es geht.

So, nachdem ich die max_execution_time hochgesetzt habe läuft das Script ohne Fehlermeldung durch, allerdings dauert das auch 60s ...
Allerdings funktioniert das updaten bzw. einfügen von Datensätzen immer noch nicht.
Ich habe das Projekt jetzt auch auf einen Webserver hochgeladen, allerdings will es dort auch nicht funktionieren ...
[Link: Registrierung erforderlich]

Außerdem Zeit messen...

Zitat:
Ich habe das Projekt jetzt auch auf einen Webserver hochgeladen, allerdings will es dort auch nicht funktionieren

Safemode?

Referenz-URLs