วันพฤหัสบดีที่ 10 มีนาคม พ.ศ. 2554

adodb class tutorial

adodb class เป็นคลาสที่ช่วยให้เขียนโปรแกรมติดต่อ database ง่ายขึ้นครับ
นอกจากนี้แล้วยังช่วย escape input เพื่อป้องกัน sql injection
และเป็น database layer ถ้าเขียนติดต่อ database ใน adodb ก็จะช่วยให้ย้ายไป database อื่นได้ง่ายขึ้นแก้ไขน้อยกว่าครับ

เริ่มต้นให้ download adodb มีหลายเวอร์ชั่นครับเลือกเอาเวอร์ชั่นที่ต้องการมาไฟล์ไฟล์เดียวครับ
http://sourceforge.net/projects/adodb/files/

<?php

//config
$conf = array();
$conf['username'] = 'root';
$conf['password'] = '12345';
$conf['host'] = 'localhost';
$conf['db'] = 'test';
$conf['driver'] = 'mysqli'; //เลือกเป็น mysqli เพื่อจะได้ใช้งาน transaction ใน adodb class ได้

//setup and connect to db
require 'adodb/adodb.inc.php'; //เปลี่ยน path ไปยังไฟล์ adodb.inc.php ให้ถูกต้อง
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$db = ADONewConnection($conf['driver']);
$db->Connect($conf['host'], $conf['username'], $conf['password'], $conf['db']);
$rs = $db->Execute('SET NAMES UTF8');

//create test data
$row = $db->GetRow("SHOW TABLES LIKE 'guestbook_test2'");
if (empty($row)){
$db->Execute(
'CREATE TABLE guestbook_test2 ('.
'id int(10) unsigned NOT NULL AUTO_INCREMENT,'.
'name varchar(20) NOT NULL,'.
'detail text NOT NULL,'.
'PRIMARY KEY (id)'.
')'
);
if ($db->ErrorNo()){
die($db->ErrorMsg());
}
echo 'create table successfully.<br>';
srand();
foreach(range(1,100) as $a){
$id = null; //insert id=null, update $id = id value
$name = md5(rand(1,10000));
$detail = sha1(rand(1,10000));
$db->Replace('guestbook_test2',compact('name','detail','id'),'id',true);
}
echo 'insert data successfully.<br>';
}

//pagination
$limit = 10;
$page = empty($_GET['page']) ? 1 : (int)$_GET['page'];

$rs = $db->PageExecute("SELECT * FROM guestbook_test2", $limit, $page);
$page_row_count = $rs->RowCount();
$row_count = $rs->MaxRecordCount();
$page_count = $rs->LastPageNo();
$rows = $rs->GetRows();
$rs->Close();

//test Execute and FetchRow
$select_id = 11;
$select_id2 = 15;
$rs = $db->Execute("SELECT * FROM guestbook_test2 WHERE id=? OR id=?", array($select_id,$select_id2));
$data = array();
while($row = $rs->FetchRow()){
$data[] = $row;
}

//test GetAssoc
$data2 = $db->GetAssoc("SELECT id,name FROM guestbook_test2 WHERE id BETWEEN ? AND ?",array(51,52));

//close connection
$db->Close();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620" />
<title>adodb tutorial</title>
</head>
<body>

<!-- records of this page -->
<?php foreach($rows as $row):?>
<?php echo $row['id'],': ',$row['detail'],' ...... by <b>',$row['name'],'</b>';?>
<hr />
<?php endforeach;?>

<!-- page links -->
<?php for($i=1; $i<=$page_count; $i++):?>
<a href="?page=<?php echo $i;?>"><?php echo $i;?></a>
<?php endfor;?>

<hr />
<!-- records of select_id1, select_id2 -->
<?php foreach($data as $row):?>
<?php echo $row['id'],': ',$row['detail'],' ...... by <b>',$row['name'],'</b>';?>
<hr />
<?php endforeach;?>

<!-- records of 51 to 52 -->
<?php foreach($data2 as $id=>$value):?>
<?php echo $id,': ',$value,'</b>';?>
<hr />
<?php endforeach;?>

</body>
</html>

1 ความคิดเห็น:

  1. อ่านแล้วยัง งงๆ เลยครับ อยากได้ตัวอย่างเพิ่ม ขอบคุณครับ

    ตอบลบ