استفاده از SQLite در PHP

SQLite یک بانک اطلاعاتی غیر وابسته به سرور، تنظیمات آزاد و دارای موتور بانک اطلاعاتی قابل اعتماد است که میتوان از آن روی هر چیزی از iPod گرفته تا نرم افزارهای موبایل استفاده کرد. همچنین میشه از بانک اطلاعاتی SQLite در نرم افزارهای کوچک تحت وب هم به خوبی بهره گرفت. با SQLite میتونین با خیالت راحت به دور از نگرانی از اجرای MySQL و PostgreSQL نرم افزار خودتون رو اجرا کنین.(یعنی اصلا دیگه مهم نیست که این ها نصب باشن یا اجرا بشن چون با اینا دیگه کاری نداریم) و اما بهترین ویژگی اینه که خیلی راحت میتونین ازش backup بگیرین و یا درون مدیریت نسخه قرارش بدین.

اینجا هم قصد داریم از SQLite در PHP استفاده کنیم که از طریق PDO خیلی راحت میشه این کار و انجام داد.

اول باید ببینین که ماژول SQLite برای PDO فعاله یا. برای این کار یه فایل PHP با اسم sqlite_in_php.php ایجاد کنین و کد زیرو داخلش قرار بدین:

<?php
phpinfo();

واژه sqlite رو جستجو کنین و چیزی شبیه به زیر رو پیدا کنین:

pic

میبینین که در جدول اول دو ماژول mysql و sqlite برای pdo فعاله ولی اگه پیدا نکردینش به فایل php.ini برید و واژه php_pdo_sqlite.dll رو پیدا کنین و علامت سمی کالن اون خط رو حذف کنین. بعد فایل رو ذخیره کنید و آپاچی خودتون رو ریستارت کنین بعد صفحه رو رفرش کنین الا دیگه باید ماژول sqlite فعال شده باشه.(توی Xampp بصورت پیشفرض فعاله)

ایجاد دیتابیس

برای ایجاد دیتابیس دو راه داریم. اول اینکه بذاریم خود پی اچ پی اون رو ایجاد کنه و دوم اینکه از یه جایی دیتابی رو بسازیم و تو پوشه قرارش بدیم(میشه از طریق خود نرم افزار sqlite هم دیتابیس رو ساخت و یا هم از نرم افزار SQLite Expert Personal).

من اینجا میذاریم پی اچ پی خودش برامون ایجادش کنه حالا شما میتونین از دیتابیس از پیش طراحی شده هم استفاده کنید.

خب حالا کدهای فایل رو حذف کنید و این کد ها رو عوضش استفاده کنید:

<?php

$dbh = null;

try{

	$dbh = new PDO("sqlite:mySqlite.db");

} catch(PDOExeption $e) {
	echo $e->getMessage();
}

if ( $dbh === null ) exit;

خط ۳ – یه متغیر خالی ایجاد کردیم برای گذاشتن شی دیتابیس

خط ۷ – اول مشخص کردیم که دیتابیس ما از چه نوعی هست و بعد آدرس فایل دیتابیس رو به سازنده ارسال کردیم.

پسوند فایل اصلا اهمیت نداره میتونین پسوند نذارین یا از پسوند db یا sqlite3 یا اصلا هرچی خواستین استفاده کنین.

با اجرا شدن فایل پی اچ پی اگه فایل دیتابیس با این نام موجود بود که خب بازش میکنه اگه نبود اول میسازدش بعد بازش میکنه. خیلی راحت با این کد یه دیتابیس SQLite ساختیم.

خط ۱۳ – اگه به هر دلیل موفق به ساخت یا باز کردن دیتابیس نشد از برنامه خارج میشه و دیگه کدهای پی اچ پی رو کامپایل نمیکنه. البته قبل خطای ایجاد شده رو در خط ۱۰ چاپ می کنه.

ساخت جدول

برای ساخت جدول کافیه یه کوئری به ساختار SQLite اجرا کنین. برای اجرای کوئری در PDO از متد exec میشه استفاده کرد:

<?php

$dbh = null;

try{

	$dbh = new PDO("sqlite:mySqlite.db");

} catch(PDOExeption $e) {
	echo $e->getMessage();
}

if ( $dbh === null ) exit;

$dbh->exec("CREATE TABLE IF NOT EXISTS garage(
	    id INTEGER PRIMARY KEY,
	    year INT(4) NOT NULL,
	    make VARCHAR(255) NOT NULL,
	    model VARCHAR(255) NOT NULL
	);");

وارد کردن رکورد

برای وارد کردن رکورد هم میشه از کد زیر استفاده کرد.

<?php

$dbh = null;

try{

	$dbh = new PDO("sqlite:mySqlite.db");

} catch(PDOExeption $e) {
	echo $e->getMessage();
}

if ( $dbh === null ) exit;

$dbh->exec("CREATE TABLE IF NOT EXISTS garage(
	    id INTEGER PRIMARY KEY,
	    year INT(4) NOT NULL,
	    make VARCHAR(255) NOT NULL,
	    model VARCHAR(255) NOT NULL
	);");

/*
* Insert record in database
*/
$dbh->exec("INSERT INTO garage(year, make, model) VALUES
    (1991, 'Ferrari', 'Testarossa'),
    (1994, 'Acura', 'NSX'),
    (1992, 'Toyota', 'Corolla');");

 

این رو فقط برا یه ثبت رکورد ساده گفتم خدمتتون. ولی در برنامه ها خیلی جاها به صلاح نیست از این روش برا ثبت داده استفاده کنیم و باید جمله ها رو آماده سازی کنیم ولی چون این آموزش مربوط به اصول کلی PDO هست راجع بهش دیگه بحث نمیکنم فقط میتونین در کد بالا عوض خطوط ۲۵ تا ۲۸ از اید کد استفاده کنین:

$newData = array(
		array( 'year' => 1991, 'make' => 'Ferrari', 'model' => 'Testarossa' ),
		array( 'year' => 1994, 'make' => 'Acura', 'model' => 'NSX' ),
		array( 'year' => 1992, 'make' => 'Toyota', 'model' => 'Corolla' ),
	);

$newCarQuery = "INSERT INTO garage
				(year, make, model) 
				VALUES 
    			(:year, :make, :model)";

$newCarStmt = $dbh->prepare( $newCarQuery );

foreach( $newData as $car ) {
	$newCarStmt->execute( $car );
}

این مدل استفاده امن تره.

انتخاب داده از جدول

برای انتخاب داده از جدول هم میتونین از متد query استفاده کنید:

برای اینکه تند تند رکورد وارد نشه در حین تست کد، کد مربوط به وارد کردن داده رو غیر فعال کردیم.

<?php

$dbh = null;

try{

	$dbh = new PDO("sqlite:mySqlite.db");

} catch(PDOExeption $e) {
	echo $e->getMessage();
}

if ( $dbh === null ) exit;

$dbh->exec("CREATE TABLE IF NOT EXISTS garage(
	    id INTEGER PRIMARY KEY,
	    year INT(4) NOT NULL,
	    make VARCHAR(255) NOT NULL,
	    model VARCHAR(255) NOT NULL
	);");

/*
* Insert record in database
*/
// $dbh->exec("INSERT INTO garage(year, make, model) VALUES
//     (1991, 'Ferrari', 'Testarossa'),
//     (1994, 'Acura', 'NSX'),
//     (1992, 'Toyota', 'Corolla');");
?>
<table>
	<thead>
		<tr>
			<th>Id</th>
			<th>year</th>
			<th>make</th>
			<th>model</th>
		</tr>
	</thead>
	<tbody>
<?php
$getDataQuery = "SELECT * FROM garage";
foreach ( $dbh->query( $getDataQuery ) as $row) {
	echo '<tr>' . PHP_EOL;
	echo '<td>' . $row['id'] . '</td>' . PHP_EOL;
	echo '<td>' . $row['year'] . '</td>' . PHP_EOL;
	echo '<td>' . $row['make'] . '</td>' . PHP_EOL;
	echo '<td>' . $row['model'] . '</td>' . PHP_EOL;
	echo '</tr>' . PHP_EOL;
}
?>
	</tbody>
</table>

 

با توجه به اینکه PDO یعنی شی داده پی اچ پی(یعنی با همین کدهای بالایی که نوشتیم میتونیم به MySQL، SQL Server، PostgreSQL و خلاصه هر چی بانک اطلاعاتی توسط PDO پشتیبانی میشه دسترسی داشته باشیم. پس شد یک نگارش زبان و اتصال به چندین دیتابیس) خیلی گسترده س و مربوط به تمام دیتابیس ها میشه پس آموزش کامل PDO رو باید جای دیگه ارائه کنیم و تو این آموزش فقط میگیم که چجوری به بانک اطلاعاتی SQLite وصل بشیم و دو تا دستور ساده رو اجرا کنیم.