データベースが使えないサーバーでもMySQLのように使えるtxtSQLの使い方

投稿者: | 2014年4月15日

txtSQL_01

安価なサーバーでは、PHPは使えるけれどもDB(データベース)はオプションの場合がある。
データ件数も少なく、高度な機能を必要としない場合は、txtSQLを使うのもひとつの選択だろう。

txtSQLではSELECTはもちろん、INSERT、UPDATE、DELETEも使えるから、テキストファイルベースのデータ更新プログラムの代わりに使うと、使い勝手が良い。
機能と速度に制約はあるが、その分導入は簡単だから試してみるのも良いだろう。

ダウンロードはこちら
http://sourceforge.net/projects/txtsql/

圧縮ファイルを展開すると

txtSQL.class.php
txtSQL.core.php

の他に、
examples他のフォルダがあり、この中に、phpMyAdminに似たプログラムtxtSQLAdminが含まれている。

フォルダごとサーバーにアップしてexamplesフォルダ内にあるtxtSQLAdminにアクセスする

〜/txtSQL/examples/txtSQLAdmin/index.php

初期パスワードは
Username: root
Password: 空欄

txtSQLAdmin1

phpMyAdminを使ったことのある人なら、任意のデータベースを作成し、任意のテーブルを作成するまでは簡単。
もちろん、データの挿入も可能。

txtSQLAdmin2

ここでは

/data/
index.php
txtSQL.class.php
txtSQL.core.php

という階層構造

データベース名:dbname
ログインID:usr
ログインパスワード:pass
テーブル名は:list_tbl

list_tblの中身は以下

1 Jose Ramon Torrent de l'Olla 57 934856890
2 Antonio Via Augusta 6 932124739
3 Aurora Via Augusta 6 932124740
4 Anun Corcega 46 915485312
5 Juanma Pl. Menorca 4 977982962
6 Joan Palafrugell 100 973958200
7 Jimena Republica Argentina 36 932110120

という内容として説明する

データベースに接続

$sqlPath = '.';
$sqlData = 'data';
$sqlUser = 'usr';
$sqlPass = 'pass';
$sqlDB = 'dbname';

define('TXTSQL_CORE_PATH', $sqlPath);

require_once(TXTSQL_CORE_PATH.'/txtSQL.class.php');

$sql = new txtSQL($sqlData);
$sql->strict(0);
$sql->connect($sqlUser, $sqlPass);
$sql->selectdb($sqlDB);

解説

index.phpと同ディレクトリ内にあるtxtSQL.class.php txtSQL.core.phpを使い
dataフォルダにあるdbnameという名称のデータベースに
usrというユーザー名とpassというパスワードにて接続

データ取得

接続に成功したら、次はデータの取得
txtSQLではwhereの他に、orderbyやlimitもサポートされている。

1. データベース名とテーブル名のみを指定すればデータが取得出来る

$sql->select(array('db' => '20140407','table' => 'list_tbl'));

2. orderbyを付加すると並び順を指定出来る

$sql->select(array('db' => '20140407','table' => 'list_tbl','orderby' => array('id','desc')));

3. limitを付加すると取得するレコードを指定出来る

$sql->select(array('db' => '20140407','table' => 'list_tbl','limit' => array('1','3')));

4. whereを付加すると条件を指定出来る

$sql->select(array('db' => '20140407','table' => 'list_tbl','where' => array('tel <= 10')));

サンプルデータ

表示用にテーブルタグを挿入している

<?php
$sqlPath    = '.';
$sqlData    = 'data';
$sqlUser    = 'root';
$sqlPass    = 'dorei';
$sqlDB      = '20140407';

define('TXTSQL_CORE_PATH', $sqlPath);

require_once(TXTSQL_CORE_PATH.'/txtSQL.class.php');

$sql = new txtSQL($sqlData);
$sql->strict(0);
$sql->connect($sqlUser, $sqlPass);
$sql->selectdb($sqlDB);

#----------------------------------------------------------------------------

#データベース名とテーブル名のみを指定すればデータが取得出来る
$result1 = format($sql->select(array('db' => '20140407','table' => 'list_tbl')));

#'orderby' => array('id','desc')を付加すると並び順を指定出来る
$result2 = format($sql->select(array('db' => '20140407','table' => 'list_tbl','orderby' => array('id','desc'))));

#'limit' => array('1','3')を付加すると取得するレコードを指定出来る
$result3 = format($sql->select(array('db' => '20140407','table' => 'list_tbl','limit' => array('1','3'))));

#'where' => array('tel <= 10')を付加すると条件を指定出来る
$result4 = format($sql->select(array('db' => '20140407','table' => 'list_tbl','where' => array('tel <= 10'))));

#----------------------------------------------------------------------------

function format($arr){
	$result = "<table>\r";
	$result .= "<tr><td>ID</td><td>LOGIN</td><td>PASSWORD</td><td>TEL</td><td>FAX</td></tr>\r";
	foreach( $arr as $col){
		$result .= "<tr>";
		$result .= "<td>{$col['id']}</td>";
		$result .= "<td>{$col['login']}</td>";
		$result .= "<td>{$col['passwd']}</td>";
		$result .= "<td>{$col['tel']}</td>";
		$result .= "<td>{$col['fax']}</td>";
		$result .= "</tr>\r";
	}
	$result .= "</table>\r";

	return $result;
}

#----------------------------------------------------------------------------

?>
<!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" xml:lang="en" lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title></title>
<style>
h2 {
	margin-bottom:1px;
	font-weight:normal;
	font-size:1em;
}
table {
	border-collapse: collapse;
}
table td {
	padding:2px 8px;
	text-align:center;
	border:1px solid #ccc;
}
</style>
</head>

<body>

<h2>select * from list_tbl</h2>
<?= $result1 ?>

<h2>select passwd from list_tbl orderby id desc</h2>
<?= $result2 ?>

<h2>select passwd from list_tbl limit 1,3</h2>
<?= $result3 ?>

<h2>select passwd from list_tbl where tel <= 10</h2>
<?= $result4 ?>

</body>
</html>

サンプルページ