kostenloser Webspace werbefrei: lima-city


PDO Transactions

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    simple

    simple hat kostenlosen Webspace.

    Kennt sich jemand mit PDO Transactions aus?
    Habe aktuell ein Problem mit meinen Prepared-Statements, die werden, trotz RollBack immernoch ausgefuehrt.

    <?php
    
    	/**
    	* Ausführende Klasse ist Erbe von PDO
    	*/
    
    	#Prepared Statements
    	const STATEMENT1	= 'INSERT INTO table (key) VALUES (:value)';
    	const STATEMENT2	= 'INSERT X table (key) VALUES (:value)'; #Fehler eingebaut
    	const STATEMENT3	= 'INSERT INTO table (key) VALUES (:value)';
    	
    	try{
    		#Transaction initiieren
    		$this->beginTransaction();
    	
    		#Statements vorbereiten, Variablen zuweisen (gekürzt) und ausführen...
    		$stmt = $this->prepare(self::STATEMENT1);
    		$stmt->bindValue([...]);
    		$stmt->execute();
    		
    		$stmt2 = $this->prepare(self::STATEMENT2);
    		$stmt2->bindValue([...]);
    		$stmt2->execute();
    		
    		$stmt3 = $this->prepare(self::STATEMENT2);
    		$stmt3->bindValue([...]);
    		$stmt3->execute();
    		
    		#Bei Erfolg Commit...
    		$this->commit();
    		
    	}catch (Exception $e) {
    	
    		#Rollback bei Exception
    		$this->rollBack();
    		echo "<pre>";
    		die(print_r($e));
    		
    	}
    	
    	/**
    	Erwartetes Resultat:
    		Keine Änderung in der Datenbank, da Statement2 fehlerhaft ist!
    	
    	Tatsächliches Resultat:
    		Statement1 wird ausgeführt, Statement2 wirft die Exception und verhindert die Ausführung von Statement3...
    	*/
    	
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,
    wenn du deinen Code sauber programmierst, sollte so ein Fehler in der späteren Anwendung nicht mehr vorkommen. Was ich damit sagen möchte ist, dass du alle Eingaben (userID='123') überwachen solltes, jedoch nicht die SQL Aktion (SELECT,INSERT,UPDATE) selber.

    PHP Data Objects oder kurz PDOs stellt eine Abstraktionsebene für den Datenbankzugriff dar und ermöglicht einen einheitlichen Zugang von PHP auf unterschiedliche SQL-basierte Datenbanken, wie zum Beispiel MySQL, PostgreSQL oder SQLite. Dabei wird unter anderem der Portierungsaufwand beim Umstieg auf eine andere Datenbank minimiert.

    MfG
    laen4lith
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!