Page 155 - 4636
P. 155
можна повторювати в циклі наступний виклик:$stmt->fetch();Кожне таке звернення витягує з
результату наступний рядок і заносить її в змінні. У одному і тому ж сценарії можна використовувати
mysqli_stmt_bind_parain(), і mysqli_stmt_bind_result().
8.3 Використання інших РНР-інтерфейсів роботи з базами даних
РНР підтримує бібліотеки для підключення до величезної кількості баз даних, включаючи Oracle,
Microsoft SQL Server, Postgre SQL. У цілому принцип підключення і запиту до будь-якої з цих баз
даних багато в чому збігаються. Імена функцій можуть розрізняти, а різні бази даних можуть
пропонувати різні функціональні можливості, але якщо ви вмієте підключити до MySQL, ці знання
легко застосувати і відносно будь-якої іншої бази даних. Якщо необхідно використовувати базу даних,
яка не має специфічної бібліотеки, доступної в РНР, можна вдатися до узагальнених функцій ODBC.
ODBC (Open Database Connectivity) - це відкритий інтерфейс доступу до баз даних, який є стандартом
підключення до баз даних. Функціональні можливості ODBC досить обмежені, однак на те є цілком
очевидні причини: універсальна сумісність не поєднується з використанням спеціальних
топографічних можливостей якоїсь конкретної системи. На додаток до бібліотек, що поставляється з
РНР, також доступні такі класи абстракції баз даних як MDB2, що дозволяють використовувати одні й
ті ж імена функцій для різних типів баз даних.
Використання узагальненого інтерфейсу бази даних: PEAR MDB2
Розглянемо короткий приклад використання рівня абстракції PEAR MDB2. Це один з найбільш
широко використовуваних компонентів PEAR. Інструкції щодо інсталювання рівня абстракції MDB2
наведено в додатку А. Для порівняння погляньте, як можна було б записати сценарій отримання
результатів пошуку з використанням MDB2.
Лістинг 8.5. results_generic.php - цей сценарій отримує результати пошуку з бази даних
MySQL і форматує їх для відображення
<html><head><tit1е>Магазин "Буквофил” - Результати
пошуку</title></head><body><S>Магазин "Буквофил" - Результати
пошуку</S><?php//створення коротких імен змінних
$searchtype = $_POST['searchtype' ];$searchterm =
$_POST['searchterm'];$searchterm = trim ($searchterm);if (!$searchtype
|| !$searchterm) {echo 'Виневелипараметрипошуку. Поверніться' .'
напопереднюсторінкутаповторітьвведення.';exit;}if (
!get_magic_quotes_gpc()) }$searchtype =
addslashes($searchtype);$searchterm =
addslashes(Ssearchterm);}//налаштуваннядлявикористання PEAR MDB2
require_once('MDB2.php');
$user = 'bookorama';$pass = 'bookoramal23';$host = 'localhost';$db_name
= 'books';//налаштуваннярядкауніверсальногоз'єднанняабо DSN
$dsn = "mysqli: / /".$user.":".$pass.”@”.$host."/".$db_name";//
з'єднаннязбазоюданих
$db = &MDB2::connect($dsn);//перевіркапрацездатностіз'єднання,
if (MDB2::isError($db)) {
echo $db->getMessage();
exit;}// виконаннязапиту$query = "select * from books, where
".$searchtype." like"%".$searchterm."%'";$result = $db-
>query($query);//перевірка, щозапитвиконанийправильно, якщо
(MDB2::isError($result)) {echo $db->getMessage ();
exit;)// отриманнякількостіповернутихрядків
152