//Простое подключение
$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name.';charset='.$db_charset, $db_user, $db_pwd);
//Подключение с дополнительными параметрами
$attr=array( PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ); $db = new PDO('mysql:host='.$db_host.';dbname='.$db_name.';charset='.$db_charset, $db_user, $db_pwd, $attr);
// Получаем все записи fetch() в цикле
$stmt = $db->query('SELECT * FROM table'); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row['field1'].' '.$row['field2']; //etc... }
// Получаем все записи через fetchAll()
$results = $db->query('SELECT * FROM table')->fetchAll(PDO::FETCH_ASSOC);
// Получаем количство ячеек аналог COUNT(*)
$row_count = $db->query('SELECT * FROM table')->rowCount();
// Последний добавленный ID и затронуто строк affected rows
$affected_rows = $db->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')"); $lastInsertId = $db->lastInsertId();
// запрос с несколькими переменными. prepare() защищает нас от sql inject
$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?"); $stmt->execute(array($id, $name)); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// тоже самое но красивее
$vars=array( ':name' => $name, ':id' => $id ); $stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name"); $stmt->execute($vars); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// для похуистов олдфагов можно и так
$stmt = $db->prepare("SELECT * FROM table WHERE id=$id AND name=$name"); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// если PDO не твоё, но переделывать нужно, то…
$stmt = $db->query("SELECT * FROM table WHERE id=$id AND name=$name")->fetchAll(PDO::FETCH_ASSOC);
Подведем итоги:
-простые селекты без условий проводим через query()
-для инсертов, делетов и апдейтов юзаем exec()
-сложные запросы обрабатываем с помощью prepare() а затем выполняем через execute() и получаем результат через fetch() или fetchAll()
-распиздяи могут вместо :name хуярить $name
Тут продолжение для любопытных http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers