PHP PDO, Краткая инструкция.

Author Автор: Роман Чернышов    Опубликовано: 30 марта 2012

За последние пол года работы над собственными проектами, я все чаще стал склоняться к внедрению PDO в них. для этого есть несколько весомых аргументов, во первых PHP библиотека PDO работает гораздо быстрее старой библиотеки mysqli. Во вторых предоставляет готовый интерфейс взаимодействия с БД, причем независимо от типа БД. Т.е. вы можете писать в своих скриптах запросы для mySQL, но при этом использовать базу данных SQLite, в этом случае PDO эмулирует нужные функции своими силами (для каждого типа БД требуется подключение драйвера). В третьих, с помощью этой библиотеки, используя стандартные средства, можно организовать фильтрацию запросов в базу данных, проверку запросов по маске, проверку запросов на наличие определенных типов данных, что существенно снижает вероятность инъекции.

Далее я представлю несколько примеров работы с PDO, часть из них я позаимствовал с других источников в интернете. Дабы не переписывать простые примеры работы библиотеки.

Подключение к базе БД MySQL средствами PDO

    define ( SQLCHARSET, "cp1251" );   //define ( SQLCHARSET, "uft8" );  
    $dbhost = "localhost";  
    $dbname = "dbname";  
    $dbuser = "username";  
    $dbpass = "pawwsord";  
    $db = new PDO ( 'mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass );  
    $db->query ( 'SET character_set_connection = ' . SQLCHARSET . ';' );  
    $db->query ( 'SET character_set_client = ' . SQLCHARSET . ';' );  
    $db->query ( 'SET character_set_results = ' . SQLCHARSET . ';' );

Выборка одного поля php pdo

    $row = $db->query("select row from tablename WHERE 1;")->fetch();  
    $row=$row[row];

Получаем одну строку:

$row = $db->query("select row from tablename WHERE 1;")->fetch();

Все строки

$row = $db->query("select row from tablename WHERE 1;")->fetchAll();

Определение количества строк

$player_stat = $db->query("SELECT COUNT(*) FROM players WHERE name = '".$val['name']."';")->fetchColumn()

Определяем все имена полей таблицы

    $sql = "SHOW COLUMNS FROM tablename;";  
    $dbresult = $db->prepare ( $sql );  
    $dbresult->execute ();  
    $dbfield = $dbresult->fetchAll ();  
    $count = $dbresult->rowCount();  
    for ($i=0; $i<$count; $i++) {  
        $keys[$i]="~".$dbfield[$i]['Field'];  
    }

Выборка нескольких полей из таблицы php pdo

    $sql = "SELECT * from tablename where 1;";  
    $result = $db->prepare ( $sql );  
    $result->execute ();  
    $tdata = $result->fetchAll ();  
    foreach ($tdata as $row){  
    //любые действия например  
    echo "<b>".$row['name']."</b>\n";  
    }

Определения кода ошибки

$ercode = $db->exec("delete from tablename where id='".$id."';")->errorCode();
print_r($ercode);

Определения действия в зависимости от кода ошибки php pdo

    /* например что то удаляем */  
    $db->exec("delete from tablename where id='".$id."';");  
    /* и смотрим */  
    $ercode=$db->errorCode();  
    $ercode=$ercode[0];  
    $ref=$_SERVER['HTTP_REFERER']  
    if($ercode>0){  
        echo "<script language=\"javascript\">alert('Системная ошибка.'); location.href='$ref';</script>";  
    }else{  
        echo "<script language=\"javascript\">location.href='$ref';</script>";  
    }

Вставить новую строку, если данные хранятся в массиве $t в формате $t[название столбца] = данные

$q = $db->prepare("INSERT INTO table (".(implode(",",array_keys($t))).") VALUES ('".(implode("','",$t))."');")->execute();

Изменяем строку

$db->prepare("UPDATE table SET column='data' WHERE id = '1';")->execute();

Определения последнего ID php pdo

    $lastid = $db->lastInsertId();

И на последок, проверка наличия подключения модулей PHP php-pdo и php-pdo_mysq:

<?php
if ( !extension_loaded('pdo')  ){
....
}elseif ( !extension_loaded('pdo_mysql') ) {
....
}
?>

Надеюсь данный пост(краткая инструкция) не раз послужит палочкой-выручалочкой, для вебмастеров и программистов, кто только начал использовать сию библиотеку в своих проектах.

Category PHP     Tags ,

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 159₽
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка