Исключение PDO не перехватывается при доступе с использованием классаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Исключение PDO не перехватывается при доступе с использованием класса

Сообщение Anonymous »

Я использую следующий класс для создания соединения с базой данных PDO и доступа к нему:

Код: Выделить всё

class DBCxn {
// What Data Source Name to connect to?
public static $dsn='mysql:host=localhost;dbname=dbname';
public static $user = 'root';
public static $pass = 'root';
public static $driverOpts = null;

// Internal variable to hold the connection
private static $db;
// no cloning or instantiating allowed
final private function __construct() {}
final private function __clone() {}

public static function get() {
// Connect if not allready connected
if (is_null(self::$db)) {
self::$db = new PDO(self::$dsn, self::$user, self::$pass, self::$driverOpts);
}

// Return the connection
return self::$db;
}

}
Когда я пытаюсь получить к нему доступ следующим образом и предоставленный запрос завершается неудачно (tes вместо test), исключение не выдается:

Код: Выделить всё

$db = DBCxn::get();

try {

foreach($db->query('SELECT * from tes') as $row) {
print_r($row);
}
$db = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
Код возвращает предупреждение: для foreach() указан недопустимый аргумент
Почему исключение не перехватывается?

Подробнее здесь: https://stackoverflow.com/questions/347 ... sing-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»