Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]biblioteka PDO
Forum PHP.pl > Forum > Przedszkole
michal_robak
Hello. Mam takie pytanie. Może ktoś będzie mi mógł doradzić.

Niewiele materiałów jest na necie na temat tej biblioteki a jak są to się powielają a mi chodzi o rzeczy formalne np:

1.czy PDO lib będzie miała jakiś wpływ na szybkość wykonywanych zapytań do bazy (bo zauważyłem że troche to sie mieli jakby dlużej niż normalne zapytania MYSQL-a).
2.pobranie treść w mysql :

  1. <?php
  2. $dane = mysql_fetch_assoc(mysql_query("SELECT *FROM profile"));
  3. ?>


i mam jeden rekord ... w PDO lib:

  1. <?php
  2. $zapytanie = $db -> query("SELECT *FROM profile");
  3. $zapytanie -> fetch();
  4. ?>


i jeszcze nie doczytałem czemu ale musze używać $zapytanie -> execute(); żeby pobrało mi dane.

3. Tekst dotyczący closeCursor():

Cytat
Po zakończeniu pobierania niezbędne jest zamknięcie zbioru wyników poleceniem closeCursor() - inaczej nie będziemy w stanie wysłać następnego zapytania


Czy to znaczy że jak mam coś takiego:

  1. <?php
  2. $firmaQ = $db -> prepare("SELECT Fid,nazwafirmy,miasto FROM firmy WHERE Fid = ?");
  3. $firmaQ -> bindValue(1,$dane['Zid'],PDO::PARAM_STR);
  4. $firmaQ -> execute();
  5. $firma = $firmaQ -> fetch();
  6.            
  7.            
  8. $zdjentkoQ = $db -> prepare("SELECT url_mini FROM obrazki_firmy WHERE Fid = ?");
  9. $zdjentkoQ -> bindValue(1,$firma['Fid'],PDO::PARAM_STR);
  10. $zdjentkoQ -> execute();
  11. $zdjentko = $zdjentkoQ -> fetch();
  12. ?>


następnie w kodzie pobieram dane z tablicy $firma oraz $zdjentko. Według tego powyższego tekstu drugie zapytanie nie powinno zadziałać a tu jednak działa. I teraz gdzie powininem dodać kod:

  1. <?php
  2. $zdjentkoQ = closeCursor();
  3. $firmaQ = closeCursor();
  4. ?>


na końcu strony??. Czy może wcale to nie jest potrzebne??.

5. Kolejne pytanko. W tym zapytaniu:

  1. <?php
  2. $zdjentkoQ = $db -> prepare("SELECT url_mini FROM obrazki_firmy WHERE glowny = 1 AND Fid = ?");
  3. $zdjentkoQ -> bindValue(1,$firma['Fid'],PDO::PARAM_STR);
  4. ?>


W pierwszej linijce mam znak zapytania ... za jego pomocą wiążę to co jest w następnej linijce. Teraz podając parametr PDO::PARAM_STR nie musze tego zapytania wykonywać w ten sposób:
  1. <?php
  2. $zdjentkoQ = $db -> prepare("SELECT url_mini FROM obrazki_firmy WHERE glowny = 1 AND Fid = '?'");
  3. ?>

czyli nie musze dodawać ciapków (czyt. cudzystowy).

4. Wydaje mi się że mimo iż ta biblioteka jest wychwalana to jednak jest chyba nieco męcząca.
ucho
1. PDO jest gdzieś pomiędzy ADODB w postaci zwykłej i binarnego rozszerzenia - wprowadza bardzo nieduży narzut.
2. Bo tak smile.gif
3. Masz tam dwa różne obiekty PDOStatement, wiec nie musisz się tym przejmować, jak bardzo chcesz możesz na nich po prostu unset() zrobić
5. Rodzaj ciaapków zależy od bazy, poza tym zapytania parametryzowane są używane właśnie po to, żeby sobie takimi rzeczami głowy nie zawracać. Osobiście wolę używać execute($tablicaparametrow) niż te robić te bindy.
4. Jak sięnie podoba to nikt do używania nie zmusi smile.gif
michal_robak
krótko zwięźle i na temat ... o to mi chodziło smile.gif. Tylko pytanko jeszcze do pkt 5. Mówisz o czymś takim:

  1. <?php
  2. $zapytanie = $db -> execute("SELECT id FROM profile WHERE Uid=2");
  3. $dane = $zapytanie -> fetch();
  4. ?>


?
ucho
  1. <?php
  2. $stmt = $pdo -> prepare("SELECT id FROM profile WHERE Uid=?");
  3. $stmt->execute(array(2));
  4. $dane = $stmt -> fetch();
  5. ?>
michal_robak
UCHu a jakbym musiał używać STRingów a nie INTów:

  1. <?php
  2. $stmt = $pdo -> prepare("SELECT id FROM profile WHERE Uid='?'");
  3. $stmt->execute(array("mail@mail.pl"));
  4. $dane = $stmt -> fetch();
  5. ?>


czy jakoś:

  1. <?php
  2. $stmt = $pdo -> prepare("SELECT id FROM profile WHERE Uid=?");
  3. $stmt->execute(array("mail@mail.pl",PDO::STR));
  4. $dane = $stmt -> fetch();
  5. ?>


czy jeszcze jakoś inaczej smile.gif. Widze że to duże uproszczenie co pokazałeś, ale chyba bez bindów się nie uda w mojej wersji prawda?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.