code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:Erweiterte PDO-Klasse für den Zugriff auf sqlite-Datenbanken -> ftxPDO.class.php
md5:55156f98cc1461491e3896ad24f29b06
sha1:4702380a543ebfea5501ce693f856430fa22d68d
Download-Link:Download
  1. <?php
  2.  
  3. /*
  4. * LastUpdate:   2020-03-14     
  5. * Version:      1.0.1 (Nur Kommentar geändert.)
  6. * Author:       Jörg Reinholz, fastix WebDesign & Consult Kassel, http://www.fastix.org        
  7. * Requirements: PHP > 7.0      
  8. * Licence:      https://code.fastix.org/lizenz.php      
  9. * Non-Warranty: https://code.fastix.org/haftung.php
  10. */
  11.  
  12.  
  13. class ftxPDO extends PDO {
  14.  
  15.         protected $arErrors = [];
  16.         protected $errorTypes = [
  17.                 0,
  18.                 E_USER_NOTICE,
  19.                 E_USER_WARNING,
  20.                 E_USER_ERROR
  21.         ];
  22.  
  23.         function __construct ( $connectString, $errType = E_USER_ERROR ) {
  24.                
  25.                 if ( ! in_array( $errType, $this-> errorTypes ) ) {
  26.                         trigger_error( '$errType  has to be ' . implode ( ' or ', $this ->errorTypes ), E_USER_ERROR );
  27.                 }
  28.                                
  29.                 $connectString = trim( $connectString );
  30.                
  31.                 if ( 0 === strpos( $connectString, 'sqlite:' ) ) {
  32.                        
  33.                         /*
  34.                         ** Driver is mysqli. Check the file, the permissens & connect.
  35.                         */     
  36.                        
  37.                         $filename = trim( substr ( $connectString, 7, strlen( $connectString ) ) );
  38.                         $dirname  = dirname( $filename );
  39.                        
  40.                         if ( '' == $dirname ) {
  41.                                 $dirname = './';
  42.                         }
  43.                        
  44.                         if ( ! is_writable ( $dirname ) ) {
  45.                                 $eMsg = 'The directory "' . $dirname . ' has to be writable.';
  46.                                 $this -> arErrors[] = $eMsg;
  47.                         }
  48.  
  49.                         if ( ! is_file( $filename ) ) {
  50.                                 $eMsg = 'the file "' . $filename . '" not exits.';
  51.                                 $this -> arErrors[] = $eMsg;
  52.                         } else {
  53.                                 if ( ! is_readable( $filename ) ) {
  54.                                         $eMsg = 'the file "' . $filename . '" is not readable';
  55.                                         $this -> arErrors[] = $eMsg;   
  56.                                 }
  57.                                 if ( ! is_writable( $filename ) ) {
  58.                                         $eMsg = 'the file "' . $filename . '" is not writable';
  59.                                         $this -> arErrors[] = $eMsg;
  60.                                 }
  61.                         }
  62.            
  63.             if ( count( $this -> arErrors ) ) {
  64.                                 if ( 0 != $errType ) {
  65.                                         trigger_error( implode( ' and ', $this -> arErrors ) , $errType );
  66.                                 }
  67.                         }
  68.                        
  69.                         try {
  70.                                 parent::__construct( 'sqlite:' . $filename );
  71.                         } catch( PDOException $e ) {
  72.                                 trigger_error( $e -> __toString(), E_USER_ERROR );
  73.                         }
  74.                        
  75.         } else {
  76.                         /*
  77.                         ** Driver is not mysqli. Connect at the normal way.
  78.                         */
  79.                         try {
  80.                                 parent::__construct( $connectString );
  81.                         } catch( PDOException $e ) {
  82.                                 trigger_error( $e -> __toString(), E_USER_ERROR );
  83.                         }                              
  84.                 }
  85.         }
  86. }