Exzilla.net
Contact
Home -> Articles -> Quick Start Guide to Pear DB
 
Features
Forums
Files
Blogs
Quick Start Guide to Pear DB
Feb 27, 2003
เรียบเรียงโดย Narisa N.
Author's Bio | E-Mail
Copyright (C) 2003 exzilla.net

เรียบเรียงจากเอกสารต้นฉบับ Quick Start Guide to Pear DB " http://www.vulcanonet.com/soft/?pack=pear_tut " โดย Tomas V.V.Cox

1. Introduction
2. Getting and Installing Pear
3. Pear DB Usage
4. Available methods map
5. Error handling
6. Thanks


1. Introduction

บทความนี้เป็นการแนะนำการใช้งาน Pear DB ซึ่งเป็น classes ที่ใช้ในการทำงานเกี่ยวกับ database และการจัดการข้อผิดพลาดที่เกิดขึ้น

2. Getting and Installing Pear

ในขณะนี้โครงการ Pear กำลังอยู่ในขั้นตอนการพัฒนา ดังนั้นถ้าเราต้องการใช้งาน Pear DB ในตอนนี้ เราสามารถไปดาวน์โหลดได้จาก CVS เพราะ Pear DB ที่มากับ PHP 4.0.6 เป็นเวอร์ชันเก่า หลังจากได้ Pear DB มาแล้ว เราเพียงแค่เพิ่มไดเรคทอรีของ Pear ไปใน include_path ใน php.ini หรือเพิ่มโดยใช้คำสั่ง ini_set('include_path', '/pear_base_dir')
ขั้นตอนในการติดตั้ง Pear DB สามารถทำได้ดังนี้

ดาวน์โหลดไฟล์ Pear ได้ที่

#cd /usr/local/lib

เข้าสู่ repository โดยใช้คำสั่งต่อไปนี้ และใช้รหัสผ่าน "phpfi"

#cvs –d :pserver:cvsread@cvs.php.net:/repository login

ใช้คำสั่งต่อไปนี้ในการดาวน์โหลดไฟล์ Pear ทั้งหมด เราสามารถใช้คำสั่งนี้ในการ update ไฟล์ที่ดาวน์โหลดมาได้ด้วยเช่นกัน และสามารถใช้ตัวเลือก "today" หรือ "last month" ก็ได้ แต่แนะนำให้ใช้ "last week" เพราะโดยทั่วไปแล้ว bug ที่เจอ จะถูกแก้ไขภายใน 1 อาทิตย์

#cvs –d :pserver:cvsread@cvs.php.net:/repository export –D "last week" php4/pear

จากนั้นทำการแก้ไขไฟล์ php.ini และเพิ่มไดเรคทอรี /usr/local/lib/php4/pear ไปใน include_path ถ้าเราไม่ต้องการแก้ไขไฟล์ php.ini เราสามารถใช้คำสั่ง ini_set('include_path', 'path_to_pear'); ใน source code ของเราได้

หมายเหตุ
- เอกสารเกี่ยวกับ PHP CVS สามารถอ่านได้ที่ี่ "http://cvs.php.net/"
- Pear DB ต้องใช้งานร่วมกับ PHP เวอร์ชัน 4.0.4 ขึ้นไป และบาง package ใน Pear เช่น XML Parser ที่เป็นสคริปต์ในการติดตั้ง Pear จะต้องใช้ PHP เวอร์ชัน 4.0.5 หรือมากกว่า

3. Pear DB Usage

3.1 Connecting and Disconnecting from a database

ตัวอย่างการ connect และ disconnect จากฐานข้อมูล

<?php

// อย่าลืม! ไดเรกทอรีของ pear ต้องอยู่ใน include_path
require_once 'DB.php';
$user = 'foo';
$pass = 'bar';
$host = 'localhost';
$db_name = 'clients_db';

// Data Source Name นี่คือ connection string ที่ใช้โดยทั่วไป
$dsn = "mysql://$user:$pass@$host/$db_name";

// คำสั่ง DB:connect ถ้าติดต่อฐานข้อมูลสำเร็จ เราจะได้ค่า Pear DB object กลับมา แต่ถ้าติดต่อไม่สำเร็จเราจะได้ค่า Pear DB Error object กลับมาแทน

//ในการใช้คำสั่ง DB:connect นี้ เราสามารถกำหนดค่า TRUE เป็นพารามิเตอร์ตัวที่สองก็ได้ ถ้าต้องการให้ connection นี้อยู่ตลอดไป ตัวอย่างเช่น
//$db = DB:connect($dsn,true);
$db = DB::connect($dsn);

//การใช้ DB:isError ทำให้เราสามารถแยกแยะได้ว่า สามารถติดต่อ database ได้หรือไม่
if (DB::isError($db))
{
    die($db->getMessage());
}
...

//สุดท้าย เราสามารถ disconnect จาก database ได้โดยใช้คำสั่ง
$db->disconnect();
?>

รูปแบบของ Data Source Name connection string (สามารถคัดลอกโดยตรงได้จาก parseDSN method ใน pear/DB.php) มีดังนี้


phptype คือ backend ของ database ที่ใช้ใน PHP ตัวอย่างเช่น mysql, odbc
dbsyntax คือ database ที่ใช้กับ SQL syntax
protocol คือ protocol ที่ใช้ เช่น tcp, unix
hostspec คือ ชื่อ host มีลักษณะการใช้ เช่น hostname[:port]
database คือ database ที่ใช้ใน DBMS server
username คือ ชื่อผู้ใช้ที่ใช้ในการเข้าสู่ระบบ
password คือ รหัสผ่านที่ใช้ในการเข้าสู่ระบบ

รูปแบบ DNS connection string ที่สมบูรณ์ คือ

phptype(dbsyntax)://username:password@protocol+hostspec/database

แต่เราสามารถใช้ DNS ในรูปแบบต่างๆ เหล่านี้ได้

phptype://username:password@protocol+hostspec:110//usr/db_file.db
phptype://username:password@hostspec/database_name
phptype://username:password@hostspec
phptype://username@hostspec
phptype://hostspec/database
phptype://hostspec
phptype(dbsyntax)
phptype

ระบบฐานข้อมูลที่สนับสนุนการใช้ Pear DB ใน phptype มีดังนี้


         
mysql  -> MySQL
pgsql  -> PostgreSQL
ibase  -> InterBase
msql   -> Mini SQL
mssql  -> Microsoft SQL Server
oci8   -> Oracle 7/8/8i
odbc   -> ODBC (Open Database Connectivity)
sybase -> SyBase
ifx    -> Informix
fbsql  -> FrontBase               

หมายเหตุ บาง feature อาจจะไม่สนับสนุน backend ของระบบฐานข้อมูลทั้งหมด สามารถอ่านรายละเอียดเพิ่มเติมได้ที่เอกสาร Pear DB extensions status ที่อยู่ใน <pear base dir>/DB/STATUS

3.2 Doing a query to the database

<?php
...

//เมื่อเราติดต่อ database และได้ DB object มาแล้ว เราสามารถดึงข้อมูลจาก database ได้ดังนี้
$sql = "select * from clients";

//ถ้าเราดึงข้อมูลโดยใช้คำสั่ง SELECT เราจะได้ DB Result object กลับมาจากการใช้คำสั่ง $db->query ถ้าเราไม่ได้ใช้ SELECT เราจะได้ค่า DB_OK กลับมาแทน และถ้าไม่สามารถดึงข้อมูลได้ เราจะได้ค่า DB Error object กลับมา
$result = $db->query($sql);

//อย่าลืมเช็คค่า $result ที่ได้มาไม่ได้ error โดยใช้
if (DB::isError($result))
{
    die($result->getMessage());
}
...
?>


3.3 Fetch the rows from the query


3.3.1 Fetch row functions

<?php
...

//หลังจากที่เราได้ DB Result object แล้ว สามารถอ่านข้อมูลในแต่ละแถวไปเรื่อยจนกว่าจะหมด
while ($row = $result->fetchRow())
{
    $id = $row[0];
}
?>

ถ้าเราไม่ใช้ fetchRow() เราสามารถใช้ fetchInto() เพื่ออ่านค่าในแถวข้อมูลได้โดยตรง ดังนี้

<?php
...

while ($result->fetchInto($row))
{
    $id = $row[0];
}
?>


3.3.2 Select the format of the fetched row

เราสามารถใช้ fetch ได้ 3 mode คือ DB_FETCHMODE_ORDERED (default), DB_FETCHMODE_ASSOC และ DB_FETCHMODE_OBJECT

ตัวอย่างโครงสร้างข้อมูลที่เราได้จากการใช้ fetch mode ต่างๆ

<?php
$res = $db->query('select id, name, email from users');
$row = $res->fetchRow($mode);

// การใช้ $mode = DB_FETCHMODE_ORDERED เราจะได้ array ที่เรียงตามลำดับข้อมูล
$row = array
(
    0 => <column "id" data>,
    1 => <column "name" data>,
    2 => <column "email" data>
);
$id = $row[0];


// การใช้ $mode = DB_FETCHMODE_ASSOC จะได้ array ที่มีความสัมพันธ์กับชื่อคอลัมน์ เป็นคีย์ของ array
$row = array
(
    'id' => <column "id" data>,
    'name' => <column "name" data>,
    'email' => <column "email" data>
);
$id = $row['id'];

// การใช้ $mode = DB_FETCHMODE_OBJECT จะได้ DB_ROW object พร้อมกับชื่อคอลัมน์เป็น property
$row = db_row Object
(
    [id] => <column "id" data>,
    [name] => <column "name" data>,
    [email] => <column "email" data>
);
$id = $row->id;
?>


3.3.3 Set the format of the fetched row

เราสามารถนำ fetch mode ไปใช้ใน fetchRow() หรือ fetchInfo() ได้ นอกจากนี้เรายังสามารถกำหนด default mode ให้กับ database ของเราได้ด้วยเช่นกัน

<?php
...

// 1) กำหนด mode ต่อการเรียกข้อมูลแต่ละครั้ง
while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC))
{
    [..]
}

while ($result->fetchInto($row, DB_FETCHMODE_ASSOC))
{
    [..]
}


// 2) กำหนด mode สำหรับการเรียกทุกครั้ง
$db = DB::connect($dsn);

// การกำหนดเช่นนี้ จะเป็นการกำหนด default fetch mode สำหรับ Pear DB ในทุกครั้งที่ดึงข้อมูล
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$result = $db->query(…);
while ($row = $result->fetchRow())
{
    $id = $row['id'];
}
?>


3.3.4 Fetch rows by number

ระบบ fetch ของ Pear DB สนับสนุนให้มีการใส่พารามิเตอร์สำหรับการ fetch ข้อมูลด้วย ดังนั้นจากข้อมูลผลลัพธ์ที่ได้มา เราสามารถ fetch ข้อมูลตามแถวที่ต้องการได้ วิธีนี้เป็นการช่วยให้เราสามารถแสดงผลข้อมูลได้ตามจำนวนแถวที่เราต้องการ (ตัวอย่างการสร้าง HTML Lists โดยแบ่งเป็น page) หรือแสดงแถวข้อมูลได้ตามลำดับที่ต้องการ เป็นต้น

<?php
...

// กำหนดแถวที่ต้องการเริ่ม fetch
$from = 50;

// กำหนดจำนวนแถวต่อ page
$res_per_page = 10;

// กำหนดแถวสุดท้ายที่ต้องการ fetch สำหรับ page นี้
$to = $from + $res_per_page;
foreach (range($from, $to) as $rownum)
{
    if (!$row = $res->fetchRow($fetchmode, $rownum))
    {
        break;
     }
    $id = $row[0];
    ...
}
?>


3.3.5 Free the result

เมื่อทำงานเกี่ยวกับ result ที่ได้เรียบร้อยแล้ว เราสามารถปล่อย result ทิ้งได้โดยใช้ free()

<?php
...
$result = $db->query('select * from clients');
while ($row = $result->fetchRow())
{
    ...
}
$result->free();
?>


3.4 Quick data retrieving


ใน Pear DB มีวิธีพิเศษในการดึงข้อูลจาก query โดยไม่จำเป็นต้องใช้ fetchRow() และวน loop นั่นคือ getOne, getRow, getCol, getAssoc และ getAll ซึ่งมีตัวอย่างการใช้งานดังนี้

<?php
require_once 'DB.php';
$db = DB::connect('pgsql://postgres@unix+localhost/clients_db');

// getOne จะดึงข้อมูล result แรกของคอลัมน์แรกจาก query
$numrows = $db->getOne('select count(id) from clients');

// getRow จะ fetch ข้อมูลแถวแรก และส่งกลับมาเป็น array
$sql = 'select name, address, phone from clients where id=1';
if (is_array($row = $db->getRow($sql)))
{
    list($name, $address, $phone) = $row;
}

// getCol จะส่งค่า array ที่เป็นข้อมูลของคอลัมน์ที่ต้องการ เราสามารถใส่เลขที่คอลัมน์ที่ต้องการเป็นพารามิเตอร์ตัวที่สองได้ จากคำสั่งนี้เราจะได้ผลลัพธ์ของ array คือ
// $all_client_names = array('Stig', 'Jon', 'Colin');
$all_client_names = $db->getCol('select name from clients');

// สำหรับ getAssoc() และ getAll() สามารถอ่านรายละเอียดได้จาก pear/DB/common.php

?>

การใช้ method get*() ทั้งหลาย จะช่วยในการดึง query, fetch ข้อมูล และ free result และ Pear DB function ทั้งหมดจะส่งค่า Pear DB_Error object กลับมาหากมี error เกิดขึ้น

3.5 Getting more info from query results (numRows, numCols, affectedRows, tableinfo)

จาก Pear DB เราสามารถดึงข้อมูลจากผลลัพธ์ของ query ได้หลายวิธี นั่นคือ

  • numRows() จะ return จำนวนแถวข้อมูลที่ได้จาก "SELECT" query
  • numCols() จะ return จำนวนคอลัมน์ที่ได้จาก "SELECT" query
  • affectedRows() จะ return จำนวนแถวที่เป็นผลกระทบจากการจัดการข้อมูล คือ "INSERT", "UPDATE", "DELETE"
  • tableinfo() จะ return ค่า array ที่มีความสัมพันธ์กับข้อมูลฟิลด์ที่ได้จาก "SELECT" query

ตัวอย่างการใช้งาน

<?php
...
$db = DB::connect($dsn);
$sql = 'select * from clients';
$res = $db->query($sql);

// อย่าลืมเช็คค่า result ที่ได้กลับมาว่าเป็น Pear Error object หรือเปล่า ถ้าได้ข้อความ เช่น "DB_error: database not capable" หมายความว่า database backend ของเราไม่สนับสนุนการทำงานนี้

// จำนวนแถว
echo $res->numRows();

// จำนวนคอลัมน์
echo $res->numCols();

// ข้อมูลตารางข้อมูล
print_r ($res->tableInfo();

// จำนวนแถวที่ถูกกระทบ
$sql = "delete from clients";

// การใช้คำสั่งนี้จะไม่มีการ return ค่า result object
$db->query($sql);
echo 'I have deleted ' .$db->affectedRows() . 'clients';
?>


3.6 Sequences

การจัดลำดับ sequence เป็นวิธีกำหนดค่า ID ที่ unique ให้ข้อมูลแต่ละแถว ซึ่งมันคือการทำงานเหมือนกับ AUTO_INCREMENT ซึ่งง่ายต่อการใช้งาน เริ่มจากเรา request ค่า ID และทำการใส่ค่า ID นั้นลงไปในฟิลด์ของแถวข้อมูลใหม่ที่เรากำลังสร้างขึ้น เราสามารถใช้ sequence ได้มากกว่าหนึ่ง sequence สำหรับตารางข้อมูลทั้งหมดที่มี เพียงแค่ใช้ sequence ให้ตรงกับตารางข้อมูลที่เราต้องการ

<?php
...

// ได้ค่า ID (ถ้า sequence ที่เราเรียกไม่มีอยู่ มันจะถูกสร้างขึ้นมาอัตโนมัติ
$id = $db->nextID('mySequence');

// ใช้ ID ใน INSERT query
$res = $db->query("INSERT INTO myTable(id, text) VALUES ($id, 'foo')");
...
?>


3.7 Prepare & Execute/ExcuteMultiple (not yet written)

<?php
...

// ตัวอย่าง code ต่อไปนี้ยังไม่ได้ทำการทดสอบ

// ตัวอย่างการ insert ข้อมูล
$alldata = array
(
    array(1, 'one', 'en'),
    array(2, 'two', 'to'),
    array(3, 'three', 'tre'),
    array(4, 'four', 'fire'),
);
$sth = $dbh->prepare("INSERT INTO numbers VALUES(?,?,?)");
foreach ($alldata as $row)
{
    $dbh->execute($sth, $row);
}

// ตัวอย่างการใส่ไฟล์ลงในตารางข้อมูล
$myfile = "/tmp/image.jpg";
$sth = $dbh->prepare('INSERT INTO images (?, &)');
$dbh->execute($sth, array("This is me", $myfile));

// สามารถใช้พารามิเตอร์แบบ array ใน getXxx ได้เช่นกัน
$ver = $dbh->getOne("SELECT stableversion FROM packages WHERE name = ?", array($package));
?>


3.8 AutoCommit, commit and rollback (not yet written)

ยังพัฒนาไม่เสร็จค่ะ

4. Available methods map

/* จาก DB_(driver) object */

<?php
...

// ได้ค่า object
$db = DB.connect('mysql://user:pass@localhost/my_db');

// กำหนดตัวเลือก
$db->setErrorHandling();
$db->setFetchmode();

// ข้อมูล
$db->affectedRows();
$db->tableInfo();

// จัดการฐานข้อมูล
$db->query();

// fetch ข้อมูล
$db->nextId();
$db->getOne();
$db->getRow();
$db->getCol();
$db->getAssoc();
$db->getAll();

// คำสั่งที่เกี่ยวข้องกับการ execute
$db->quote();
$db->prepare();
$db->execute();
$db->executeMultiple();

// รายการ Transaction
$db->autoCommit();
$db->commit();
$db->rollback();

// Disconnection
$db->disconnect();

/* จาก DB_result objects */

// ได้ค่า object
$res = $db->query('select * from foo');

// fetch ข้อมูล
$res->fetchRow();
$res->fetchInto();

// ข้อมูล result
$res->numCols();
$res->numRows();
$res->tableInfo();

// Free
$res->free();

/* จาก DB_error objects */

// ได้ค่า object
$error = $db->query('select * from no_table');
$error->getMessage();
$error->getDebugInfo();
$error->toString();
?>


5. Error handling

5.1 Getting the error message from a Pear DB Error

Error ที่ return จาก Pear DB คือ Pear Errors ตัวอย่างการดึงข้อมูลจาก Pear Errors มีดังนี้

<?php
$res = $db->query('select * from no_table');
if (DB::isError($res))
{

    // ได้ข้อความของ error ที่เกิดขึ้นเป็นแบบ portable
    echo $res->getMessage();
}
?>


5.2 Debugging Pear DB Errors

Pear DB ใช้ระบบ portable error messages ในการส่งข้อความ error ไปให้ผู้ใช้ ซึ่งการใช้วิธีนี้จะทำให้ง่ายต่อการแปลข้อความ error ให้เป็นภาษาที่เข้าใจ หรือกำหนดให้ทำอะไรเมื่อเกิด error ที่กำหนดไว้ แต่วิธีนี้ไม่ได้ให้ข้อมูลกับนักพัฒนามากนักว่า มันเกิดอะไรขึ้น ดังนั้นเพื่อที่จะดักจับ error ที่เกิดจาก backend และ query ล่าสุด เราสามารถใช้ getDebugInfo() ได้

<?php
$sql = 'select * from no_table';
if (DB::isError($res = $db->query($sql)))
{

    // ได้ backend error และ query ล่าสุด
    echo $res->getDebugInfo();
}
?>

โดยปกติแล้ว ถ้า PHP function เกิด fail ขึ้นมา มันจะพิมพ์ error message ออกมา แต่ใน Pear จะไม่มีการพิมพ์ออกมา ซึ่งในบางครั้ง ถ้าเราต้องการเห็นข้อความ เพื่อดักจับ error ในโค้ดของเรา เราสามารถใช้ PHP function คือ set_error_handler ที่อธิบายอยู่ใน PHP Manual
ตัวอย่างการใช้อย่างย่อๆ

<?php

// ข้อความที่ต้องการรายงาน
error_reporting (E_ALL ^ E_NOTICE);

// function นี้จะจัดการเกี่ยวกับการรายงาน error ทั้งหมด
function my_error_handler ($errno, $errstr, $errfile, $errline)
{
    echo "In $errfile, line: $errline\n<br>$errstr";
}
set_error_handler ('my_error_handler');
$db = DB::connect('pgsql://postgres@localhost/no_db');
...
?>


5.3 Taking automatic actions on errors

จากที่กล่าวมา เราจะเห็นว่า Pear DB สามารถตรวจสอบ และรายงาน error ที่เกิดขึ้นได้ มี feature ที่เอื้อให้นักพัฒนาตรวจสอบ result ที่ได้จากการทำงานว่ามี error หรือไม่ Pear DB ได้มีระบบที่ยืดหยุ่นมากๆ ในการทำงานอย่างอัตโนมัติเมื่อเกิด error ขึ้น ซึ่งมีการทำงานในลักษณะต่างๆ ดังนี้

  • PEAR_ERROR_RETURN จะ return ค่า error object นี่คือ การทำงานที่เป็น default
  • PEAR_ERROR_PRINT เป็นการพิมพ์ error
  • PEAR_ERROR_DIE เป็นการพิมพ์ error message และยกเลิกการทำงาน
  • PEAR_ERROR_TRIGGER จะใช้ PHP function คือ trigger_error() และส่งไปยัง PHP error
  • PEAR_ERROR_CALLBACK จะส่งค่า error object ไปยัง function หรือ object method

ตัวอย่างการใช้งาน

<?php
require_once 'DB.php';

// กำหนด default action เมื่อเกิด error
PEAR::setErrorHandling(PEAR_ERROR_DIE);

// จากนี้ เราไม่ต้องเช็ค error อีกต่อไป
$db = DB::connect('pgsql://postgres@localhost/my_database');
$res = $db->query('select id from no_table');

// จากตรงนี้ การทำงานจะถูกยกเลิก และข้อความ error จะแสดงขึ้นมา
...
?>

ตัวอย่างขั้น advance

<?php

// กำหนด application environment นั่นคือ ระบุ error ที่เราต้องการให้แสดงขึ้นมา
define ('DEBUG_ENV', true);

// Function นี้จะจัดการ error ทั้งหมดที่เกิดขึ้น
function handle_pear_error ($error_obj)
{

    // ใช้ในขณะที่กำลังพัฒนาโปรแกรม
    if (DEBUG_ENV)
    {
        die ($error_obj->getMessage()."\n".$error_obj->getDebugInfo());
    }

    // ใส่ข้อความที่เข้าใจง่าย เมื่อนำไปใช้งานจริง
    else
    {
        die('Sorry your request cannot be processed now. Try again later');
    }
}

require_once 'DB.php';

// เมื่อเกิด error จะเรียก function "handle_pear_error" ขึ้นมา
// เราสามารถใช้ object เป็น Pear error ก็ได้ เช่น
// setErrorHandling(PEAR_ERROR_CALLBACK, array($object, 'method_name');
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'handle_pear_error');
$db = DB::connect('pgsql://postgres@localhost/site_db');
$res = $db->query('select id from no_table');

// จากตรงนี้ การทำงานจะถูกยกเลิก และ function "handle_pear_error" จะถูกเรียกขึ้นมา โดยใช้ error object เป็น argument แรก
while ($row = $res->fetchRow())
{
    ...
}
...
?>

หมายเหตุ อ้างอิง Pear Reference Manual ในรายละเอียดเกี่ยวกับการทำงานที่แตกต่างกัน

แนวทางในการสร้าง extended error handling system

<?php
error_reporting (E_ALL ^ E_NOTICE);

// function นี้จะจัดการ error ที่ถูก report จาก PHP ทั้งหมด
function php_error_handler ($errno, $errstr, $errfile, $errline)
{
    die ("In $errfile, line: $errline\n<br>$errstr");
}
set_error_handler ('php_error_handler');

// function นี้จะดักจับ error ที่เกิดจาก Pear
// แปลงให้เป็น PHP error และส่งมาที่ php_error_handler
function pear_error_handler ($err_obj)
{
    $error_string = $err_object->getMessage() . '<br>' . $error_obj->getDebugInfo();
    trigger_error ($error_string, E_USER_ERROR);
}
require 'DB.php';
PEAR::setErrorHeadling (PEAR_ERROR_CALLBACK, 'pear_error_handler');

// จัดการกับ error ที่เกิดขึ้น
$db = DB::connect('pgsql://postgres@localhost/no_db');
...
?>


6. Thanks

ขอขอบคุณ Stig ที่สร้างโลกของ Pear ขึ้นมา ขอบคุณบุคคลทั้งหลายที่ช่วย maintain บทความนี้ และแน่นอน ขอขอบคุณทีมงาน Pear ที่ยังคงพัฒนา Pear ต่อไป


และทาง Exzilla.net ขอขอบคุณ Tomas V.V.Cox ที่อนุญาตให้แปลบทความนี้
Special thanks to Tomas V.V.Cox for accepting our translation


Keywords:

Pear DB, Thai, Install, Pear, Connect, Disconnect, Query, Fetch, Free, Sequence, Error Handling, Error, Message

 

 
 
{exzilla.net -- e-development QuickStart --}



Copyright (c) 2001-2009 - Exzilla.net -  All Rights Reserved.
Contact Us | Privacy Policy | Terms & Conditions