Temat: [php][smarty][pdo] niezrozumiały Fatall Error

Mam kod:
<?php
function smarty_function_filmy($params,&$smarty)
{
try {
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.'', DB_USER, DB_PASSWORD);
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

while($row=$pdo->query('SELECT * FROM kategoria')->fetch())
{
$film['id'] = $row['id']; $film['kategoria'] = $row['kategoria'];
$film_tablica[] = $film;
}
$pdo = null;
$pdo -> closeCursor();
$smarty -> assign('film', $film_tablica);
$smarty -> fetch('plugins_templates/filmy.tpl');

}
catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
?>


wywala mi błąd:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 16 bytes) in /home/wiciu/domains/wiciu.hekko.pl/public_html/filmy/plugins/function.filmy.php on line 13


chodzi o linię gdzie jest while...

Czytałem, że chodzi o przydział pamięci, ale za bardzo nie rozumiem skąd błąd bo baza z której będą pobierane dane ma tylko 14 rekordów składających się z dwóch pól. Normalnie mi pobiera dane ale jak próbuję z wykorzystaniem smarty i pdo to mi coś nie wychodzi, a dopiero się uczę tych technik.

///
temat do zamknięcia, problem rozwiązanyWojciech Potocki edytował(a) ten post dnia 06.12.08 o godzinie 21:09

konto usunięte

Temat: [php][smarty][pdo] niezrozumiały Fatall Error

Prawdopodobnie wpadłeś w nieskończoną pętlę. Nigdy nie rzeźbiłem w samym PDO, więc strzelam:


$result = $pdo->query('SELECT * FROM kategoria');
while($row=$result->fetch())
{
$film['id']=$row['id'];
$film['kategoria'] = $row['kategoria'];
$film_tablica[] = $film;
}


Po prostu za każdym obrotem pętli zapytanie zdaje się wykonywać jeszcze raz. Ale to tylko strzał...

konto usunięte

Temat: [php][smarty][pdo] niezrozumiały Fatall Error

Jakub B.:
Po prostu za każdym obrotem pętli zapytanie zdaje się wykonywać jeszcze raz. Ale to tylko strzał...

dawno temu zrobilem sobie raz:
while(mysql_query(...))


;-)
Dominik Stelmach

Dominik Stelmach Programista
Aplikacji
Internetowych,
Action S.A.

Temat: [php][smarty][pdo] niezrozumiały Fatall Error

Witam,

Myślę, że Jakub ma rację. Na twoim miejscu jednak darowałbym sobie tą pętlę. Nigdzie nie widzę bowiem zastosowania dla


$film['id']=$row['id'];


Ponieważ i tak cały wynik wkładasz do tablicy film_tablica więc proponowałbym takie rozwiązanie:


$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$film_tablica = $pdo->query('SELECT * FROM kategoria')->fetchAll()
$pdo = null;


Pozdrawiam,
Dominik

Następna dyskusja:

PHP Smarty - "offline mode"




Wyślij zaproszenie do