経緯
ちょっとしたphpのプログラムを作ることを任されましたw。会員管理とかほんとにもうbasic認証ぐらいな感じの簡単なやつを。まあそんだったら php + SQlite 組み入れてと思ってたら本番先はレンタルサーバー…。まあそんな感じで凹んでいましたが、運よく SQLiteが入っているのでラッキーと思っていたら SQlite1.0.3 。
ちょっとーそんな古い環境、、ローカルに環境作れるの?と、また「はまった」のでそのメモ。
ちなみに散々探して(前にメモしていたのを無くした)下記のサイトとおりに行ったらいまくいったのです(笑)。
手順
php とかも入れますぜw
# yum install httpd-devel php php-mbstring php-pear php-devel php-pdo wget
# wget http://museum.php.net/php5/php-5.3.4.tar.gz
# tar xvfz php-5.3.4.tar.gz
# cd php-5.3.4/ext/sqlite
# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
config.m4:50: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2743: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:50: the top level
config.m4:50: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2743: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:50: the top level
# ./configure
# make clean;make
# make install
# sudo echo 'extension=sqlite.so' > /etc/php.d/sqlite.ini
# sudo echo '<?php phpinfo();' > /var/www/html/phpinfo.php
Apache を再起動して、SQLite が実行可能かを確認する。
よしよし。
さんのサイトの、コードそのままですが(多少変更)。
適当なディレクトリに設置して。実行します。
<?php
$sqliteerror = null;
/* SQLiteハンドルの取得 */
$dbh = sqlite_open('test.db', '0666', $sqliteerror)
or die ("file not create.");
/* テーブルの作成 */
/* idをプライマリ宣言し自動シーケンス */
$query = <<<QUERY
DROP TABLE account_tbl;
);
QUERY;
$result = sqlite_query($query, $dbh);
$query = <<<QUERY
CREATE TABLE account_tbl (
id INTEGER,
number INTEGER,
name VARCHAR(64) NOT NULL,
email VARCHAR(128),
PRIMARY KEY (id)
);
QUERY;
$result = sqlite_query($query, $dbh)
or die ("table not create.");
/* ステートメントの生成 */
$query = "INSERT INTO account_tbl (number,name,email) VALUES ".
"('30248','takahasi','takahasi@hoge.com') ";
$result = sqlite_query($query, $dbh);
$query = "INSERT INTO account_tbl (number,name,email) VALUES ".
"('45567','ito','ito@hoge.com') ";
$result = sqlite_query($query, $dbh);
/* データの取得 */
$result = sqlite_query('SELECT * FROM account_tbl', $dbh);
$cols = array();
while ($cols = sqlite_fetch_array($result, SQLITE_ASSOC)) {
echo "----------------------<br>";
echo "id = {$cols['id']}" . "<br>";
echo "number= {$cols['number']}" . "<br>";
echo "name = {$cols['name']}" . "<br>";
echo "email = {$cols['email']}" . "<br>";
echo "----------------------<br>";
}
/* ステートメントの開放 */
$result = null;
?>
結果として
----------------------
id = 1
number= 30248
name = takahasi
email = takahasi@hoge.com
----------------------
----------------------
id = 2
number= 45567
name = ito
email = ito@hoge.com
----------------------
と画面に表示されれば、ok