pdo

Ошибки расширения PDO -- перехват исключения для fetch()

Интересует вопрос - какие именно виды ошибок включают в себя ошибки типа PDOException?

Пример из учебника Котерова(стр 709):

php PDO Транзакция -- как создать. Пример кода.

Объявить какой-то участок кода, работающий с БД транзакцией с помощью PDO можно так:

  
$pdo->beginTransaction(); // объявлем начало транзации


 /* ...........
тут ваш код, который  выполняет sql запросы средствами pdo 
и должен выполняться как единое целое 
-- т.е. если произойдёт сбой, до того как транзакция завершит 
- всё вернётся на свои места
..........
*/

$pdo->commit(); // закрываем транзкцию

где $pdo создано как $pdo = new PDO(...);

php Пример создания PDO соединения с указанием кодировки

Как уже обсуждалось ранее установить соединением с указанием кодировки можно так:

try {
    $pdo = new PDO(
        'mysql:host=localhost;dbname=sec;charset=utf8', 'root', '11',
        [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
} catch(PDOException $e){
    echo 'Невозможно установить соединение с базой данных'
        . $e->getMessage();
}

-- в данном случае мы используем кодировку utf-8, указывая это во фрагменте:

php Кириллица пишется в базу в неправильной кодировке -- кракозябры (SQL pdo, русский текст не отображается)

Предположи, что вы отправляете форму с русскими буквами, а в базе у вас оказывается не пойми что.

Решать проблему следует так (везде нужна кодировка UTF-8):

PDOException: SQLSTATE[42000] Значение почему-то берётся в кавычки

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''3' OFFSET 0' at line

Решение

Проблема в том, что при использовании:

PDOException: SQLSTATE[42000]

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

php Не отображается ошибка в логе mysql (pdo fatal error)

Получаем ошибку типа:

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''3' OFFSET 0' at line

но при этом логе mysql её не видно...При этом причина ошибки была такова.

php PDO не отображаются ошибки как включить

При создании объекта необходимо установить параметры. например:

$this->pdo = new \PDO(\Config::$db_dsn, \Config::$db_username,
       \Config::$db_password,
        array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

php pdo Получить sql строку запроса (результирующий запрос, итоговый)

Это нельзя сделать средствами php, так как подстановка длеается уже сервером БД, например. mySQL, но в ней зато можно включить логи запросов самой СУБД.

php pdo установить кодировку при соединении

Forums:

Используйте:

array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'названиекодировки\' ''

Например так:

$this->pdo = new \PDO(\Config::$db_dsn, \Config::$db_username,
    \Config::$db_password,
     array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

Pages

Subscribe to RSS - pdo