Selamlar,
Öncelikle sorununuzun pdo ile uzaktan yakından ilgisi yok, temel php sorunları.

Sonrası içinse her zaman ek denetim yapmak olası hata ve sorunları engeller bazı bölümleri globalleştirebilirsiniz.

public function fastauth($authroles = ['admin','teacher']) /* bu genel auth fonksiyonumuz */
{
	if (!is_array($authroles)) { /* gelen roller array değilse array yapıyoruz */
		$authroles = [$authroles];
	}
	if (
		isset($this->data) && /* basit set kontrolu */
		isset($this->data['users']) &&  /* basit set kontrolu */
		isset($this->data['users']->role) &&  /* basit set kontrolu */
		in_array($this->data['users']->role, $authroles) /* kullanicinin rolu gelen rollerde varmı yokmu kontrolu */
	){
		return true; /* olumlu dönüş */
	}
	return false; /* olumsuz dönüş */

}
public function delete($id = false)
{
	if ( /* && = and yani ve anlamına geliyor */
		$this->fastauth(['admin','teacher']) && /* eğer yönetici veya öğretmense */
		is_numeric($id) && /* burada gelen id değerimizin numeric olup olmadığını kontrol ettik - eğer $id numeric gelmiyorsa bu koşulu silebilirsiniz */
		class_exists('examsList') &&  /* aşağıda çağırdığımız sınıf&model sistemde varsa (cok gerekli degil ama tedbir) */
		method_exists('examsList', 'find') /* bu sınıfın find methodu varsa (cok gerekli degil ama tedbir) */
	) {
		$find = examsList::find($id); /* burada gonderdigimiz id ile veritabanından kayıt çekiyoruz */
		if ($find != null) { /* kayıt null dönmemişse yani veritabanında varsa işleme devam ediyoruz mantıken olmayan bir kaydı silemeyiz */
			$find->delete(); 
			return true; /* silme işlemi ve olumlu dönüş */
		}
	}
	return false;
}

Sonra diyorlar ki fastphp neden saatlik ücretin bu kadar fazla