biblioteka PDO

0

Witam. Przepisując kod mysql na PDO, takie pytanie nasuneło mi się: czy kod NIE od bazy mysql, np. setcookie, $_SESSION[] = ..;, warunki, itp. także mam trzymać w try { } ? Czy jeśli błąd jakiś od np. setcookie będzie to on się nie pojawi i przejmie go obsługa błędów od pdo? (Chodzi mi właśnie o te błędy, czy one zostaną przejęte czy nie).

Mam np. kod:

try
{
// 1. Zapytaniem przez PDO sprawdzam czy istnieje konto o podanym loginie

// 2.
if ( $_POST['autologin'] == '1' )
{
setcookie(..);
$_SESSION[..] = ..;
// Zapytanie przez PDO
}

// 3. Zapytanie przez PDO

// 4. 
$_SESSION[...] = ....;
$_SESSION[...] = ....;
header(..);
}
catch(PDOException $e)
{
echo 'Blad biblioteki PDO: '.$e->getMessage();
exit;
}

2 pytanie: Czy muszę kilka razy w 1 pliku .php łączyć z bazą danych w każdym try przez PDO, czy wystarczy 1 raz na górze strony?
3 pytanie: Czy połączenie z baza mysql przez PDO kończy się jakoś jak mysql_close()? Nigdzie nie widziałem tego.

0

setcookie nie rzuca wyjątków raczej ;)
Twój kod tego nie złapie - w catch łapiesz tylko PDOExpection
Gdy coś innego rzuci wyjątek to dostaniesz Fatal Errora: Uncaught exception ...

Cały kod możesz otoczyć przez try (gdzieś tam w index.php, który zapewne ładuje inne pliki)

kończyć połączenia nie musisz w ogóle, chyba, że masz jakiś konkretny ku temu powód (np skrypt po ostatnim zapytaniu jeszcze długi czas wykonuje jakieś obliczenia)

0

Możesz też rzucić wyjątek w przypadku błędu.

set_error_handler(function($errno, $errstr, $errfile, $errline) {
    throw new Exception('...');
});

// Tutaj kod, który może wyrzucić błąd

restore_error_handler();

1 użytkowników online, w tym zalogowanych: 0, gości: 1