Strings of Life

PHP/Phalcon/MySQL/JavaScript/RegExp/Ruby/Perl/ActionScript

タグ:MySQL

CREATE TABLEする段になって、自信が持てずリファレンスを見ることがたまにあるので、よく使うものをメモ。

CHAR 固定長文字列(255文字まで)
VARCHAR 可変長文字列。格納するバイト数を指定する(255文字まで)
TEXT テキストデータ。65,535文字まで。容量は指定しない
INT 整数(負の数もOK)
DEC 小数も扱える
DATETIME 日付と時間
DATE 日付のみ
BLOB バイナリデータ(65,535バイトまで)

CHAR(10)と書くと、10文字を格納可能な固定長文字列のデータ型となる。VARCHAR(10)だと10バイトなので、日本語等のマルチバイト文字列を扱う際には注意が必要。MySQL 4.1以降では、VARCHAR(10)は「10文字」となり、半角英数であれ、マルチバイト文字であれ、10文字を格納できる。VARCHAR(10)で10バイトとなるのは、MySQL 4.1よりも前のバージョン。

INT(10)だと10桁の整数。DEC(10, 5)と書くと、全部で10桁で、小数点以下5桁まである数を格納できる。

Webアプリケーションの開発でよく使われる(私も仕事で使っている)、Linux + Apache + MySQL + Perl, Python, PHPの組み合わせ、いわゆるLAMP環境を、MacBook Airに構築します。


1. Linux(Ubuntu)


前回VirtualBoxを利用したUbuntuの利用方法は書いたので、説明は省きます。まず、OSであるLinux(Ubuntu)を起動します。


2.  Apache HTTP Server

サーバーソフトのApache HTTP Serverは、Ubuntuにデフォルトで入っています。また、通常であれば、Ubuntuの起動と同時にApacheも起動するようになっています。起動していることを確認するには、ブラウザーのURLに「http://localhost/」と入力します。「It works!」と表示されれば、Apacheが正常に動作しています。


3. MySQL

MySQLとは、SQLという言語を利用するデータベースソフトウェアです。MySQLのインストールは、Windowsだと結構めんどくさい。しかし、Ubuntuなら、端末で「sudo apt-get install mysql-server」と唱えるだけです。途中で、データベースのパスワードの設定を求められます。(phpMyAdminも同様に、sudo apt-get install phpmyadminでインストールできます)

「端末」とは、Macにおける「ターミナル」にあたるソフトウェアで、対話型インターフェース(コマンドライン)でコンピューターの操作を行うことができます。端末に向かって「おまじない」を唱えると、コンピューターがそれに従って処理を進めてくれるのです。初めはとっつきにくく感じると思いますが、慣れれば非常に便利であることに気づくはずです。

コマンドについて解説すると、「sudo」とは、管理者としてこのコマンドを実行します、という意味で、sudoコマンドを実行すると、Ubuntuセットアップ時に設定したパスワードの入力が求められます。アプリケーションのインストール等の、管理者しか実行できない操作を行うときに使用します。

「apt-get」はパッケージを取得してダウンロードするコマンド、installでインストール、mysql-serverがインストール対象です。これらのコマンドは、UNIXコマンドと呼ばれ、Mac OSのターミナルでも同様のコマンドが使えます(ただし、apt-getのようなLinux特有のコマンドもあります)。

インストールが終わったら、端末で「mysql -uユーザー名 -pパスワード」と入力します。-u及び-pの後ろには空白を入れません。パスワードを設定していない場合、-p以降は不要です。

MySQLが起動して、操作可能になります。「SHOW DATABASES;」というクエリを実行してみると、information_schemaとtestという2つのデータベースが存在していることが分かります。

36


4. Perl, Python, PHP

これら3つの言語は、Ubuntu 12.04には最初から入っています。
Perl, Pythonは最初から入っています。PHPは、「sudo apt-get install php5」でインストールできます。

インストールされているか確認するためには、端末で「php -v」と入力してやります。インストールされていれば、「PHP 5.3.10...」といったバージョン情報が表示されます。perlも同様。pythonは「python -V」(Vは大文字)と入力します。


5. アクセス権の変更

Apache HTTP Serverのルートフォルダは、デフォルトでは/var/wwwになっています。したがって、ここにphpファイルを置けば、phpを実行可能になる、のですが、デフォルトでは/wwwフォルダには書き込みが禁止されているため、ファイルを新しく入れたり作ったりすることができません。

phpを実行できるようにするためには、「apacheの設定を書き換えてルートフォルダを変更する」「/var/wwwのアクセス権を変更する」の2つの方法がありますが、今回はアクセス権を変更してみます。

アクセス権の変更には、「所有者を変更する」「パーミッションを変更する」の2種類のやり方があります。右クリックメニューの「プロパティ」からでは変更できないので、端末を利用する必要があります。

所有者を変更するコマンドは「sudo chown -R user /var/www/」。chownはchange owner、すなわち所有者変更。-Rで/www/フォルダ内の全てのファイルの所有者を変更します。userの部分にはユーザー名を入れてください。

アクセス権を変更するコマンドは「sudo chmod -R 775 /var/www」。chmodでアクセス権変更、775はアクセス権の内容で、775は「管理者と所有者は読み書き実行が可能、それ以外のユーザーは読みと実行は可能だが書きは不可」という状態です。

所有者の変更とアクセス権の変更は、どちらか片方でもOKです。

/var/wwwに書き込みできるようになったら、適当なプログラムでphpの実行テストをします。

19

これで、LAMP環境を構築することができました。インストールが必要なのはMySQLだけでしたね。


7. PHPの設定・PHP+MySQL

ここからはPHP特有の話になります。現在、PHP5とMySQLのインストールが完了しましたが、まだPHP5とMySQLが連携できるようにはなっていません(のハズ…)。「sudo apt-get install php5-mysql」でPHP5とMySQLを連携させるパッケージをインストールします。

また、PHPはデフォルトではエラーメッセージを出さない設定になっているので、「sudo gedit /etc/php5/apache2/php.ini」を実行します。これは、geditというテキストエディタでphp.iniというPHPの設定ファイルを編集するコマンドです。

php.iniを開いたら、ctrl + Fで検索をかけ、「display_errors = Off」という文字列を見つけます。これを、「display_errors = On」に書き換えてやれば、エラーメッセージが表示されるようになります。なお、設定を反映させるにはapacheの再起動が必要です(sudo service apache2 restart)。

ひと通り設定が終わったら、MySQLデータベースにテスト用のテーブルを作成し、PHPでそのテーブルの中身を呼び出すプログラムを書いてみます。

22


以上で、LAMP環境構築は一旦終了です。VirtualBoxを利用すれば簡単に仮想OS環境を構築できますし、UbuntuにはApacheや様々なプログラミング言語が最初からインストールされているので、開発環境の構築は比較的容易だと思います。

今週はずっとPHP&MySQL。SQLのうち、SELECT文の書き方だけをしっかりやって、その後はSQLの結果をPHPを使ってHTML上に引っ張ってくる操作の練習。

SQLの記法にもある程度慣れ、PHPも調べながらならそれなりに書けるようになったかな、というところ。

ページング機能を実装してたら、うっかり無限ループを書いてしまうという一幕も。

失敗例:

<?php
for ($i=1;$i < 10;$i++){
    if($i = 1){
        echo "1";
    }else{
        echo "$i";
    }
}

if($i = 1)で、「$iに1が入っているときは」という条件文を書いたつもりだが、実際には$iに1を代入しているので、結果、$iに1を代入→"1"を表示→$iに1を加算→$iに1を代入... の無限ループとなっている。$iに1が入っている時だけ動く条件文は、以下のように書く(=を==に変えただけ)。

<?php
for ($i=1;$i < 10;$i++){
    if($i == 1){
        echo "1";
    }else{
        echo "$i";
    }
}

会社:PHPとMySQLに関してはひと通りやった。その後はJQuery。セレクタ機能はCSSと似ているので、感覚的に理解しやすい。お手軽に動的な表現ができるのはスゴイ。

自宅:phpMyAdminを使ってSQLの練習。

xampp1.7.7 MySQL5.5の環境でphpMyadminにログインするときは、

http://localhost/

ではなく、

http://127.0.0.1/

からログインすること。前者だとエラーが起こる。

このページのトップヘ