Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ręczne zapytania MySQL czy AdoDB?, Lepiej wykonywać zapytania SQL ręcznie, czy korzystając z biblioteki?
Apocalyptiq
post
Post #1





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Odkąd tylko pracuje z MySQL, używam biblioteki AdoDB - do obsługi baz danych. Chciałem zapytać profesjonalistów, co bardziej się opłaca - wykonywać zapytania ręcznie poprzez fetch, czy używać jakiejś biblioteki do baz danych? AdoDB posiada takie funkcje jak GetOne - pobranie jednego rekordu do zmiennej, GetCol - pobranie kolumny, GetRow - pobranie wiersza itp.
Proszę o wasze opinie, co jest wydajniejsze, co jest poprawniejsze i co wygodniejsze w użyciu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Po prostu jak radzicie pracować z bazami MySQL (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
(ta biblioteka AdoDB ma około 2MB)

Zrobiłem małe testy czasowe AdoDB i ręcznych zapytań, i ręczne wypadają ok. 3x szybciej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tylko że przy AdoDB piszę się mniej kodu, wygodniej nieco się pracuje z bazami. Tylko stosując ręczne zapytania, trzebaby się wyposażyć w jakąś funkcję zabezpieczającą zmienne wprowadzane do zapytań SQL z zewnątrz przed SQL Injection - tj. dodawanie apostrofów w odpowiednich miejscach itp.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
NoiseMc
post
Post #2





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Cytat
I co do PDO - to przy każdej operacji na nim, trzeba się zawsze od nowa łączyć z bazą danych? na początku tego try{...
Żeby nie pisać przy każdej operacji na MySQL hasła, hosta, loginu itp. - to ten początek każdego skryptu PDO najlepiej chyba zaincludować z zewnętrznego pliku, w którym będzie to połączenie z MySQL przez PDO? Jak profesjonalni programiści to łączenie się z bazą robią?


To moze rzuce kodem...

  1. <?php
  2. class Base_Model
  3. {
  4.   /**
  5.     * @var PDO
  6.     */
  7.   protected $db;
  8.  
  9.   public function __construct ()
  10.   {
  11.       $config = Config::getSomeConfiguration ();
  12.  
  13.       $this->db = new Pdo ('mysql:host=' . $config->database->host . ';dbname=' . $config->database->dbname . '', $config->database->username, $config->database->password);
  14.      
  15.       $this->db->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  16.       $this->db->setAttribute (PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
  17.   }
  18. }
  19. ?>


  1. <?php
  2. class Cities_Model extends Base_Model
  3. {
  4.    /**
  5.      * @return Cities_City
  6.      */
  7.    public function getByID ($cityID)
  8.    {
  9.        $query  = 'SELECT * FROM cities WHERE cityID = ?';
  10.  
  11.        $statement = $this->db->prepare ($query);
  12.                    
  13.        $statement->bindParam (1, $cityID);
  14.            
  15.        $statement->execute ();
  16.        
  17.        $city = $statement->fetch ();          
  18.        
  19.        return $city;
  20.    }
  21.    
  22.    /**
  23.      * @return array ()
  24.      */
  25.    public function getAll ()
  26.    {
  27.        $query  = 'SELECT * FROM cities ORDER BY name ASC';
  28.  
  29.        $statement = $this->db->prepare ($query);
  30.            
  31.        $statement->execute ();
  32.        
  33.        $cities = array ();
  34.        
  35.        while (($city = $statement->fetch ()) !== false)
  36.        {
  37.            $cities[] = $city;
  38.        }
  39.        
  40.        return $cities;
  41.    }
  42. }
  43. ?>


a potem tylko ...

  1. <?php
  2. $citiesModel = new Cities_Model ();
  3.  
  4. foreach ($citiesModel->getAll () as $city)
  5. {
  6.    print ($city['name'] . '<br />');
  7. }
  8. ?>


Ten post edytował NoiseMc 22.10.2008, 23:22:32
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 05:56