トップページ > ZaurusSL-C3000 > 初期設定 > ハードの設定と初期インストールその5
データベースとCGIの連携をとるために、PHP環境でMySQLを使ってみようと思い、PHPをインストールしてみた。MySQLでデータベースを作成し、それをNetFrontから見ることができるようになった。
$ cd /mnt/card/Documents/aphp $ su # tar xvzf apache-1.3.27-php-4.2.3_0.1_arm.tar.gz(apを打ってtabで補完) # ls -a apache-1.3.27-php-4.2.3_0.1_arm.ipk control.tar.gz data.tar.gz debian-binary # tar xvzf data.tar.gz
を実行すると
/home以下にファイルができる
AddHandler cgi-script .cgi ;;perlのcgiで追加しているがその下に追加 AddHandler cgi-script .rb AddHandler cgi-script .rhtml AddType application/x-httpd-ruby .rb AddType application/x-httpd-ruby .cgi AddType application/x-httpd-ruby .rhtml Action application/x-httpd-ruby ruby AddType application/x-httpd-eruby .rb AddType application/x-httpd-eruby .cgi AddType application/x-httpd-eruby .rhtml Action application/x-httpd-eruby eruby
<? phpinfo() ?>
$ cd /hdd3/Documents $ tar xvzf pukiwiki-1.4.5.tar.gz
// Site admin's name (CHANGE THIS) $modifier = '自分の名前';
// Site admin's Web page (CHANGE THIS) $modifierlink = 'http://localhost/puki/';
$ su
で、root権限に。 # chown -R daemon /var/lib/mysql (注、daemon?ここはzaurusでもよいかもしれない)
MySQLインストールディレクトリをdaemonの権限に変更して準備完了。
で、root権限から、
# /usr/bin/mysqlstart
として、起動シェルを呼び出し、MySQL起動。
# /usr/bin/mysql
で、アクセス。
まずはMySQLのチュートリアルで勉強を
bashでは初期の設定では日本語を直接入力できない。コマンドライン上で日本語が入力できないと、MySQLの検索などで不便なのでいろいろ調べてみた。
/home/zaurus/.inputrcというファイルを作り、その中に以下を記載する。
set convert-meta off set meta-flag on set output-meta on
再起動して日本語を入力するとそのまま表示される。
# /usr/bin/mysqlstart Starting MySQL database server: mysqld. 終了は # /usr/bin/mysqlstop
# mysql mysql> 終了は mysql> \q
新しいフォルダーを作ることだと思えばよい。
mysql> create database mydb; Query OK, 1 row affected (0.00 sec)
mysql> grant all on mydb.* to zaurus@localhost identified by 'pass'; Quary OK, 0 rows affected (0.01 sec)
なお、元のCSVファイルにはパン屋とか電話番号、住所などが書かれているとします。
mysql> show databases; +----------+ | Database | +----------+ | mydb | +----------+
mysql> use mydb;
mysql> show tables; Empty set (0.00 sec)
mysql> create table bakery ( -> name varchar(255), パン屋の名前 -> kana varchar(255), よみがな -> address varchar(255), 住所 -> tel varchar(255), 電話番号 -> date varchar(20), 訪問日 -> note text); コメント Query OK, 0 rows affected (0.09 sec)
mysql> show fields from bakery +--------+--------------+------+-- | Field | Type |Nul l・・・以下略 +--------+--------------+------+ | name | varchar(255) | Yes |
あらかじめ/mnt/cf/Documents/Csv_Files/にbakery.csvがあり、EUCで記述されているとする。
mysql> load data local infile '/mnt/cf/Documents/Csv_Files/bakery.csv' -> into table bakery -> fields terminated by ','; Quary OK, 236 rows affected (0.17 sec) Records: 236 Deleted: 0 Skipped: 0 Warnings: 1183
という感じで読み込まれたがエラーが一杯
mysql> \q
<?php
//接続
if ( ! $conn = mysql_connect ( 'localhost','zaurus','pass')){
die ( 'MySQL接続失敗' );
}
//データベース選択
mysql_select_db('mydb',$conn);
//ヘッダ
header ('Content-Type: text/html; charset=shift_jis');
?>
<HTML>
<HEAD>
<TITLE>mysql検索テスト1</TITLE>
</HEAD>
<BODY>
<?php
//SQL発行
$rs= mysql_query ("select * from bakery",$conn);
//テーブルヘッダ
echo "<table border=1>";
echo "<tr><th>name</th><th>tel</th><th>address</th></tr>";
//1件ずつ取り出すループ
while ($rec = mysql_fetch_array ( $rs,MYSQL_ASSOC )){
echo "<tr>";
echo "<td>" . $rec['name'] . "</td>";
echo "<td>" . $rec['tel'] . "</td>";
echo "<td>" . $rec['address'] . "</td>";
echo "</tr>";
}
//テーブルフッタ
echo "</table>";
//結果セットの解放
mysql_free_result ( $rs );
//切断
mysql_close ($conn);
?>
</body>
</HTML>
実は、この形式は200LXのNoteTakerというテキストデータベースによく似ている。
create database lesson; show databases;でlessonがあるのを確認 use lesson;
でlessonに移る
create table nandemo (id int not null auto_increment,tourokubi date, title char(128),honbun text, keyword char(128),index ind1(id));
注意するのはmysqlのバージョンが古いので本のとおりだとidにindexを作れない。
一度にnot null auto_increment 、index の権限を与えないとうまくいかない。
load data infile '/mnt/cf/Documents/data/jinmei.txt' into table nandemo;
以上でnetfrontでhttp://localhost/nandemo/でうまく表示されれば成功
人名辞典のタイトルのみを検索したとき、6300件の表示で7分ぐらいかかるが一応全件表示された。普通であれば数秒でNetFrontが表示を終える。
下のコメントにあるように、
通勤電車で地下探検Reloadedさんのところで、PHPを使用したデータベースが紹介されている。
CSVをPHPで取り扱うときに大変参考になると思います。
掲示板にお願いします