Loading...
правильно я все понял?

PDO::ERRMODE_EXCEPTION нужно использовать совместно только с try/catch ?
Во всех остальных режимах ошибки (PDO::ERRMODE_SILENT или PDO::ERRMODE_EXCEPTION) try/catch бессполезен?
Если я не использую оператор throw для исключений обворачивать само соединеие в try/catch просто бесполезно?
________
посл. ред. 24.02.2018 в 03:10; всего 2 раз(а); by SNEG
http://php.net/manual/ru/pdo.error-handling.php

я когда на Php.net читаю ничего не понимаю что там написано, потом часами в гугле бегаю читаю по всяких быдло сайтах
________
посл. ред. 24.02.2018 в 03:05; всего 1 раз(а); by SNEG
SNEG , ну тогда не знаю, там все отчетливо написано.

<?php

class MySQL
{
protected static $connection = null;

public static function connection()
{
if (self::$connection === null) {
try {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHAR;
$opt = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
self::$connection = new PDO($dsn, DB_USER, DB_PASS, $opt);
} catch (PDOException $error) {
die($error->getMessage());
}
}
return self::$connection;
}

public static function run($sql, $params = [])
{
$query = self::connection()->prepare($sql);
if (array_key_exists(0, $params)) {
$i = 1;
foreach ($params as $value) {
$query->bindValue($i++, $value, self::type($value));
}
} else {
foreach ($params as $key => $value) {
$query->bindValue($key, $value, self::type($value));
}
}
$query->execute();
return $query;
}

public static function type($value)
{
if (is_int($value)) {
$type = PDO::PARAM_INT;
} elseif (is_string($value) || is_float($value)) {
$type = PDO::PARAM_STR;
} elseif (is_bool($value)) {
$type = PDO::PARAM_BOOL;
} elseif (is_null($value)) {
$type = PDO::PARAM_NULL;
} else {
$type = false;
}
return $type;
}
}
PhpStorm (24.02.2018 в 03:09)

<?php

class MySQL
{
protected static $connection = null;

public static function connection()
{
if (self::$connection === null) {
try {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHAR;
$opt = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
self::$connection = new PDO($dsn, DB_USER, DB_PASS, $opt);
} catch (PDOException $error) {
die($error->getMessage());
}
}
return self::$connection;
}

public static function run($sql, $params = [])
{
$query = self::connection()->prepare($sql);
if (array_key_exists(0, $params)) {
$i = 1;
foreach ($params as $value) {
$query->bindValue($i++, $value, self::type($value));
}
} else {
foreach ($params as $key => $value) {
$query->bindValue($key, $value, self::type($value));
}
}
$query->execute();
return $query;
}

public static function type($value)
{
if (is_int($value)) {
$type = PDO::PARAM_INT;
} elseif (is_string($value) || is_float($value)) {
$type = PDO::PARAM_STR;
} elseif (is_bool($value)) {
$type = PDO::PARAM_BOOL;
} elseif (is_null($value)) {
$type = PDO::PARAM_NULL;
} else {
$type = false;
}
return $type;
}
}


Обычный класс, у меня в этом вопрос а толку PDOException $error с этого если не используется throw нигде?
Выходит что в try/catch нету смысла обворачивать соединение и использовать PDO::ERRMODE_EXCEPTION ведь ждать того что не существует ..
________
посл. ред. 24.02.2018 в 03:18; всего 2 раз(а); by SNEG
Я вообще не пойму зачем ты заморачиваешься если pdo и так бросает исключение при ошибке
SNEG (24.02.2018 в 03:14)
PhpStorm (24.02.2018 в 03:09)

<?php

class MySQL
{
protected static $connection = null;

public static function connection()
{
if (self::$connection === null) {
try {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHAR;
$opt = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
self::$connection = new PDO($dsn, DB_USER, DB_PASS, $opt);
} catch (PDOException $error) {
die($error->getMessage());
}
}
return self::$connection;
}

public static function run($sql, $params = [])
{
$query = self::connection()->prepare($sql);
if (array_key_exists(0, $params)) {
$i = 1;
foreach ($params as $value) {
$query->bindValue($i++, $value, self::type($value));
}
} else {
foreach ($params as $key => $value) {
$query->bindValue($key, $value, self::type($value));
}
}
$query->execute();
return $query;
}

public static function type($value)
{
if (is_int($value)) {
$type = PDO::PARAM_INT;
} elseif (is_string($value) || is_float($value)) {
$type = PDO::PARAM_STR;
} elseif (is_bool($value)) {
$type = PDO::PARAM_BOOL;
} elseif (is_null($value)) {
$type = PDO::PARAM_NULL;
} else {
$type = false;
}
return $type;
}
}


Обычный класс, у меня в этом вопрос а толку PDOException $error с этого если не используется throw нигде?


нет, это класс работы с PDO с автоматическим определением типа параметров И АВТОМАТИЧЕСКИМ ИХ БИНДОМ
Wins (24.02.2018 в 03:18)
Я вообще не пойму зачем ты заморачиваешься если pdo и так бросает исключение при ошибке

PDO::ERRMODE_EXCEPTION - Помимо задания кода ошибки PDO будет выбрасывать исключение PDOException, свойства которого будут отражать код ошибки и ее описание

Класс PDOException
Представляет ошибку, вызванную PDO. Вам не следует выбрасывать исключения PDOException из своего кода. Для дополнительной информации об исключениях в PHP смотрите раздел Исключения.

раздел Исключения
Модель исключений (exceptions) в PHP 5 похожа с используемыми в других языках программирования. Исключение можно сгенерировать (выбросить) при помощи оператора throw, и можно перехватить (поймать) оператором catch. Код генерирующий исключение, должен быть окружен блоком try, для того, чтобы можно было перехватить исключение. Каждый блок try должен иметь как минимум один соответствующий ему блок catch или finally.

<?php

//Пробуем (try) что-либо сделать.
try{
//Очевидно, 1 никогда не будет равняться 2...
if(1 !== 2){
//Генерируем исключение.
throw new Exception('1 не равняется 2!');
}
}
//Перехватываем (catch) исключение, если что-то идет не так.
catch (Exception $e) {
//Выводим сообщение об исключении.
echo $e->getMessage();
}


Что он выбрасывает атоматически или я что то не понимаю просто?
________
посл. ред. 24.02.2018 в 03:23; всего 4 раз(а); by SNEG
SNEG , Вы не понимаете суть PDO, дело в том, что там уже всё давно сделано, нужно ПРОСТО ЮЗАТЬ, всё давно уже придумано
Онлайн: 2
Время:
Gen. 0.1191
(c) Bym.Guru 2010-2026