新規作成 | ページ一覧 | RSS | MobileMemo | 検索 | ヘルプ | ファイル登録 | 更新履歴 | ログイン

トップページZaurusSL-C3000初期設定 > ハードの設定と初期インストールその5

ZaurusSL-C3000/初期設定/ハードの設定と初期インストールその5 - apache+PHP+MySQLでデータベースを動かす

データベースとCGIの連携をとるために、PHP環境でMySQLを使ってみようと思い、PHPをインストールしてみた。MySQLでデータベースを作成し、それをNetFrontから見ることができるようになった。

Apache+PHPインストール

TOP↑

ファイルのダウンロード

TOP↑

apache-1.3.27-php-4.2.3_0.1_arm.ipkを別のところで解凍してみる

TOP↑

を実行すると
/home以下にファイルができる

apacheの設定

TOP↑

phpのテスト用cgiを動かす

TOP↑
<? phpinfo() ?>

PukiWikiのインストール

TOP↑
$ cd /hdd3/Documents
$ tar xvzf pukiwiki-1.4.5.tar.gz

MySQLのインストール

TOP↑
$ su
で、root権限に。 # chown -R daemon /var/lib/mysql (注、daemon?ここはzaurusでもよいかもしれない)
MySQLインストールディレクトリをdaemonの権限に変更して準備完了。
で、root権限から、
# /usr/bin/mysqlstart
として、起動シェルを呼び出し、MySQL起動。
# /usr/bin/mysql
で、アクセス。

MySQLでデータベースを作成する

TOP↑

基本的な事項

TOP↑

まずはMySQLのチュートリアルで勉強を

ターミナルで日本語表示

TOP↑

bashでは初期の設定では日本語を直接入力できない。コマンドライン上で日本語が入力できないと、MySQLの検索などで不便なのでいろいろ調べてみた。

居候で候SL-C860ターミナル環境の頁から

/home/zaurus/.inputrcというファイルを作り、その中に以下を記載する。

set convert-meta off
set meta-flag on
set output-meta on

再起動して日本語を入力するとそのまま表示される。

ファイルの場所

TOP↑

起動

TOP↑
# /usr/bin/mysqlstart
Starting MySQL database server: mysqld.
終了は
# /usr/bin/mysqlstop
# mysql
mysql>
終了は
mysql> \q

新しいデータベース「mydb」を作る。

TOP↑

新しいフォルダーを作ることだと思えばよい。

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)

新しいテーブル「bakery」を作り、CSVデータからデータをインポートする

TOP↑

なお、元の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のCGIでデータを確認する

TOP↑
<?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>

参考文献

TOP↑

なんでもデータベース

TOP↑


で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が表示を終える。


活用の可能性

TOP↑

MySQL+PHPの応用

TOP↑

下のコメントにあるように、
通勤電車で地下探検Reloadedさんのところで、PHPを使用したデータベースが紹介されている。
CSVをPHPで取り扱うときに大変参考になると思います。

コメントをどうぞ

TOP↑

掲示板にお願いします