From Shabgard.ORG

PHP
SQLite پیشنهاد سبک وزن
By www.iranphp.net
Jan 16, 2005, 22:26

این درسته که MYSQL و بقیه RDBMS ها برای برنامه های بزرگ و چند کاربره مفید هستند ولی خوب اگر شما می خواین یک سایت کم ترافیک و کوچیک درست کنین، شاید SQLite بهترین راه حل باشه. چون سرعتش نسبت به MYSQL 2تا 3 برابر بیشتره که خوب مزیت بزرگیه.
کار با SQLite در PHP و بوسیله دستور PEAR آسان است. در نصب PEAR بطور پیش فرض SQLite وجود نداره ولی خیلی راحت Pear می تونه پکیج SQLite را download کنه سپس کامپایل کنه و در نهایت نصبش کنه.


[root@zaemis www]# pear download SQLite
File SQLite-1.0.2.tgz downloaded (362412 bytes)
[root@zaemis www]# pear install SQLite-1.0.2.tgz



الان SQLite در شاخه DB از PEAR قابل دسترسی است.



<?php
require_once "DB.php\";
require_once \"DB/SQLite.php\";
$db = new DB_sqlite();
?>




برای کاربران windows یک فایل dll کامپایل شده وجود دارد که شما می تونید اونو از این آدرس download کنید.



SQLite binary for Windows: snaps.php.net/win32/PECL_STABLE/php_sqlite.dll



حالا باید به فایل php.ini اینها رو اضافه کنیم (البته اگر شما از php version 5 استفاده می کنید نیازی به این تغییرات نیست).



; load the SQLite extension (UNIX)
extension=sqlite.so
; windows users will want to use this version instead
; extension=php_sqlite.dll



اتصال به دیتابیس
اتصال به SQLite با MySQL یه مقدار فرق داره. چون MySQL برای محیط های چند کاربره طراحی شده در حالیکه SQLite برای برنامه های کاربردی تک کاربره طراحی شده که نیازی به ID و password هم برای وصل شدن نداره.
در عوض باید از یک آرایه برای ایجاد یک DSN (Data Source Name) استفاده کرد. DSN اشاره گری است برای مشخص کردن محل قرارگیری فایلهای دیتابیس. بعد این DSN رو به متد connect() پاس می کنیم.




<?php
$DSN
= array(
"database\" => getcwd() . \"/dbase/mydbase.db\",
\"mode\"=> 0644
);
$db->connect($DSN);
?>



اگر شما به دیتابیسی متصل شوید که وجود خارجی نداشته باشد یک دیتابیس جدید با permission های ذکر شده جاوی mode ایجاد می شود.
متد disconnect() برای قطع کردن اتصال استفاده می شود.



<?php
$db
->disconnect();
?>




پرس و جوها
متد query() برای این منظور استفاده می شود. مثل MySQL پرس و جوها می تونن برای ایجاد جداول و وارد کردن دیتا استفاده شوند.


<?php
$query
=
"INSERT INTO guestbook (fname, lname, email, comments)
VALUES ('John', 'Smith', 'jsmith@example.org', 'Great Website!')\"
;
$result = $db->query();
?>




متد fetchRow() می تواند برای نشان دادن نتیجه پرس و جو استفاده شود که معادل متد mysql_fetch_row هست.



<?php
$query
= "SELECT * FROM guestbook\";
$result = $db->query($query);
while (list($fname, $lname, $email, $comment) = $db->fetchRow(
$result))
{
echo \"<p><a href=\\"
mailto:$email"
>$fname $lname</a> said:<br />\";
echo nl2br(htmlspecialchars(stripslashes($comment))) .
\"</p>\";
}
?>




نوشتن کد
در اینجا یک نمونه اسکریپت که با استفاده از SQLite نوشته شده داریم:



<?php
require_once "DB.php\";
require_once \"DB/SQLite.php\";
$db = new DB_sqlite();
$DSN = array(\"database\" => getcwd() . \"/dbase/mydbase.db\");
$db->connect($DSN);
$query = \"SELECT * FROM guestbook\";
$result = $db->query($query);
while (list($fname, $lname, $email, $comment) = $db->fetchRow(
$result))
{
echo \"<p><a href=\\"
mailto:$email"
>$fname $lname</a> said:<br />\";
echo nl2br(htmlspecialchars(stripslashes($comment))) .
\"</p>\";
}
$db->disconnect();
?>




دستوراتی از SQL که پشتیبانی نمی شوند
هر برنامه دیتابیسی تفسیر خودش رو از SQL92 استاندارد داره، SQLite هم مستثنا نیست. بعضی از اینها ناشی از مدل طراحی embedded این دیتابیس دارند (مثل فقدان REVOKE و GRANT) بعضی هاشون هم جدا لج آورند (مثل نادیده گرفتن data type ها)
در این آدرس می تونید لیستی از دستورات SQL رو که توسط SQLite پشتیبانی می شوند را ببینید:



(http://www.sqlite.org/lang.html) http://www.sqlite.org/lang.html



اینجا هم لیست دستوراتی است که فعلا توسط SQLite پشتیبانی نمی شوند.


http://www.sqlite.org/omitted.html) http://www.sqlite.org/omitted.html
http://www.sqlite.org/cvstrac/wiki?p=UnsupportedSql
http://www.sqlite.org/cvstrac/wiki?p=UnsupportedSql

SQLite: A Lightweight Alternative
by Timothy Boronczyk
The Swiss army knife of data storage
Wez Furlong

provided by Shilan




Copyright by Shabgard.ORG