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
Apocalyptiq
post
Post #2





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

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


nospor - te testy wykonywałem na jednej tabeli, tylko że bawiłem się później na innych tabelach i przez przypadek na forum wkleiłem różne tabele (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak poczytałem nieco o tym PDO, to np. taki kod:
Kod
<?php

    try
    {
       $pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root');
       $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      
       $stmt = $pdo -> query('SELECT id, nazwa, opis FROM produkty');
       echo '<ul>';
       foreach($stmt as $row)
       {
           echo '<li>'.$row['nazwa'].': '.$row['opis'].'</li>';
       }
       $stmt -> closeCursor();
       echo '</ul>';
    }
    catch(PDOException $e)
    {
       echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
    }
?>
Trzeba napisać do wyciągnięcia jednego zapytania. Troche chyba więcej tu kodu niż napisałoby się w takiej sytuacji w AdoDB.
Chciałbym się już na przyszłość ujednolicić co do pracy z MySQL, no i nie wiem... Ręczne zapytania niby wychodzą najszybciej, ale pewnie np. PDO nie napisanoby bez powodu - pewnie jest w czymś lepszy od ręcznych zapytań (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
nospor -> a jak ci się pracuje z PDO? nie ma żadnych kłopotów? bardzo dużo kodu się nie pisze? I jak jest w PDO z zabezpieczeniem przeciwko SQL Injection? W AdoDB wprowadzane zmienne do zapytania SQL wrzucało się najpierw w funkcję Quote, która odpowiednio zawartość danej zmiennej modyfikowała (dodawała apostrofy itp.).
I jeszcze co do wymogów MySQL - czy podając w zapytaniu MySQL nazwę tabeli, zgodnie z wymogami, trzeba tą nazwe otoczyć jakimś cudzysłowem? I tak samo z nazwami pól/wprowadzanymi wartościami - jak jest zgodnie z MySQL - otaczać je apostrofami? Jak tak, to którymi: ' ' czy ` ` (to na tyldzie, pod esc)? Bo spotykam się z takimi skryptami, gdzie używa sie albo ', albo `, albo w ogóle, a nie wiem jak jest poprawnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Apocalyptiq 22.10.2008, 14:45:54
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: 5.10.2025 - 11:26