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

Author Роман Чернышов    Category PHP     Tags , Комментариев 0 Дата 30 Мар

pdo PHP PDO, Краткая инструкция.За последние пол года работы над собственными проектами, я все чаще стал склоняться к внедрению 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') ) {
....
}
?>

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

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

О блоге и авторе

Добро пожаловать на блог веб-разработчика! На протяжении многих лет, начиная с 2009 года, я занимаюсь созданием специализированных сайтов, сервисов и крупных веб-порталов. Мною было создано несколько сотен сайтов, большинство из которых работают на ПО созданном под заказ, а также на готовом ПО которое я разрабатываю на протяжении всего периода моей деятельности. Это: CMS "Совместные покупки", CMS "osRealty", CMS "Спорт прогнозы" и многое другое.

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

Поиск по блогу
Категории
Архив
Новое на сайте
Блогеры пишут
  • Роман Чернышов: Для работы капчи на PHP 5.6, замените в файле class.captcha.php строку 264 $ifunc( $this -> i [...]
  • Роман Чернышов: Схема такая: 1) На сайте есть виртуальные кошельки (далее ВК) 2) При пополнении пользователем ВК, [...]
  • Александр: Может скрипт комментариев блокирует сообщения с кодом? Или как длинный текст не проходит?
  • Александр: Пытаюсь в который раз здесь показать код, но страница обновляется, и не сообщения, ни любого оповеще [...]
  • Роман Чернышов: Лично у меня интерес к продаже ссылок пропал уже давно. Преимущество сапы, это то - что ссылки можно [...]
Портфолио Все работы

www.detskiy-mir.net
www.detskydoctor.ru
www.betelit.ru
www.all-alliance.ru
www.videogonok.ru
www.carpfishing.by
www.property-greek.com
www.domcons.ru

с 2009 года по сегодняшний день, создано более 300 сайтов...