![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 3 Dołączył: 8.01.2008 Ostrzeżenie: (10%) ![]() ![]() |
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 Trzeba napisać do wyciągnięcia jednego zapytania. Troche chyba więcej tu kodu niż napisałoby się w takiej sytuacji w AdoDB.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(); } ?> 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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 11:26 |