Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]biblioteka PDO
michal_robak
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
ucho
post
Post #2





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

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


1. PDO jest gdzieś pomiędzy ADODB w postaci zwykłej i binarnego rozszerzenia - wprowadza bardzo nieduży narzut.
2. Bo tak (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
michal_robak
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


krótko zwięźle i na temat ... o to mi chodziło (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


?
Go to the top of the page
+Quote Post
ucho
post
Post #4





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

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


  1. <?php
  2. $stmt = $pdo -> prepare("SELECT id FROM profile WHERE Uid=?");
  3. $stmt->execute(array(2));
  4. $dane = $stmt -> fetch();
  5. ?>
Go to the top of the page
+Quote Post
michal_robak
post
Post #5





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Widze że to duże uproszczenie co pokazałeś, ale chyba bez bindów się nie uda w mojej wersji prawda?
Go to the top of the page
+Quote Post

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: 22.08.2025 - 18:42