Create table class pdo

Tworzenie tabel bazy danych w pdo

 

    Wydawać by się może proste, ale. Na początku zastanówmy się jak to ma wyglądać. Sprawdzenie czy już taka tabela nie istnieje, wiem że można to sprawdzić za pomocą samego mysql, lecz chcę zrobić do tego obsługę błędów, które mogą się przydać w późniejszym użytkowaniu.

   Postanowiłem utworzyć taką małą klasę do tworzenia tabel w bazie mysql za pomocą biblioteki PDO. Klasa posiada także usuwanie tabel i dodawanie zapytania insert które czasami podajemy przy tworzeniu takich tabel, wszystko w pdo. Sami zobaczcie co z tego wyszło.

 

 

index.php


 * @Site www.joomla-cms.com.pl 
 */  


$create   = new createtableclass();

   $table="admin";
   
   $sql2 = 'CREATE TABLE IF NOT EXISTS `admin` ('
               .'`id_ad` int(11) NOT NULL AUTO_INCREMENT,'
               .'`login` varchar(255) NOT NULL,'
               .'`password` varchar(255) NOT NULL,'
               .'`sesion` varchar(255) NOT NULL,'
               .'PRIMARY KEY (`id_ad`)'
               .') ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;';
	##################################################################################		   
			   
   // zapytanie
   $insert = "INSERT INTO `admin` (`id_ad`, `login`, `password`, `sesion`) VALUES 
          (?, ?, ?, ?)";
   // dane dla insert	  
   $insert_execute = array('2', 'admin', 'admin', '0');
   
$create->drop_table($table); /* or */ $create->create_table($table, $sql2, $insert, $insert_execute);
   
  
    echo $create->error_table();


create-table-class-pdo.php


 * @Site www.joomla-cms.com.pl 
 */  

class createtableclass{
    
    private $db;
    public $error = false;
	
   public function __construct(){ 
          $this->db   = new databaseClass();   // połączenie z bazą z autoload
		  $this->error;
        }
		
	public function error_table(){
	    if($this->error !== false){
		    return $this->error;
		}
    }	
	
    public function drop_table($table){
	    if(!empty($table)){
		  $sql4 ='DROP TABLE IF EXISTS '.$table; // szukamy tabeli
		 if($this->db->exec($sql4) !== false){
            $this->error= 'Usunięto Tabelę.';
           } else {
            $this->error= 'Nie Usunięto Tabeli .'.$table;
          } 
    }else{$this->error="Podaj nazwę tabeli do usunięcia";}
	}	
		
  public function create_table($table, $sql2, $insert=null, $insert_execute=null){
      try {
	      if(!empty($table) && !empty($sql2)){
		  /* Sprawdzamy niezależnie od podania parametru IF NOT EXISTS
		  ponieważ dostaniemy odpowiedź i wyświetlimy ją sobie na ekranie */
	     $sql ='SHOW TABLES LIKE :table'; // szukamy tabeli
         $stmt = $this->db->prepare($sql);
		 $stmt->bindValue(':table', $table, PDO::PARAM_STR);
         $stmt->execute();
    if($stmt->fetch() > 0){
             $this->error ='Tabela istnieje.';     
      }else{
	  
		if($this->db->exec($sql2) !== false){
            $this->error= 'Tabela utworzona pomyślnie.';
          // return 1; 
           } else {
            $this->error= 'Nie utworzona tabeli .'.$table;
          // return 0;
          }
		  // po utworzeniu tabeli możemy przypisać insert 
		 if(!empty($insert) && !empty($insert_execute)){
		    $q = $this->db->prepare($insert);
         $q->execute($insert_execute); 
		 }
	    }
	       }else{
		   $this->error="Podaj nazwę tabeli lub zapytanie";
		   }
             }catch(PDOException $e){
              echo 'Połączenie nie mogło zostać utw.
'.$e->getMessage();
                    }        
   
   }    
 }          

  

Komentarze  

 
0 #1 bkfwarszawa 2014-05-10 21:22
I've been absent for some time, but now I remember why I used to love this site.
Thank you, I will try and check back more often.
How frequently you update your site?
Cytować
 

Dodaj komentarz


Kod antyspamowy
Odśwież

Używamy cookies i podobnych technologii m.in. w celach: świadczenia usług, reklamy, statystyk. Korzystanie z witryny bez zmiany ustawień Twojej przeglądarki oznacza, że będą one umieszczane w Twoim urządzeniu końcowym. Pamiętaj, że zawsze możesz zmienić te ustawienia. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information