エロゲーマーのためのPHP(3) Hello, world

まずは書いてみよう

固っ苦しいところから始めるプログラム講座は巷に溢れているので、とりあえず書いて慣れていく方法をとりたいと思います。

まずは、Wikipediaでもおなじみ Hello, worldから初めてみます。これは、「Hello, World」という文字列を画面に表示するプログラムです。

まずは以下の内容をそのままテキストファイルとして保存してください。ファイル名は適当で良いのでとりあえず「hello.php」とでもしましょうか。


<?php

$dsn='pgsql:dbname=ap2 host=erogamescape.dyndns.org port=5432';
$user='nobody';
$pass='nobody';

try{
  $dbh = new PDO($dsn,$user,$pass);

  $sql='select gamename from gamelist where id=2267';

  $result = $dbh->query($sql)->fetch(PDO::FETCH_ASSOC);

}catch (PDOException $e){
  print('Connection failed:'.$e->getMessage());
  die();
}

print $result['gamename'];
print "\n";

保存したらコマンドラインから実行します。


[nog@nogjp ~]php ./hello.php
”Hello,world.”

こんな感じでHello, worldが出力されます。

書いたモノの解説

それでは今回書いたモノの解説をします。

頭のおまじない


<?php

これは、PHPのプログラムが始まるよ、ということを示すものになります。オンラインのPHPのプログラムの場合は、頭に「<?php」と末尾に「?>」を記載しますが、コマンドラインから起動するものに関しては、末尾の「?>」を省略することが多い様です。(どっちでも動きます)

接続情報の定義


$dsn='pgsql:dbname=ap2 host=erogamescape.dyndns.org port=5432';
$user='nobody';
$pass='nobody';

これはErogameScape DB(PostgreSQL)への接続情報となります。ここの下の方にユーザ名~ポート番号が記載されていますのでその情報を記載しています。

接続~データ取得


  $dbh = new PDO($dsn,$user,$pass);

  $sql='select gamename from gamelist where id=2267';

  $result = $dbh->query($sql)->fetch(PDO::FETCH_ASSOC);

PDO(PHP Data Objects)を使ってDBへ接続して、SQL文を発行してデータを1行取得する処理となります。

まず、$dbh (DataBase Handler の略でこう書くことが多い)というオブジェクトを、先ほど説明した接続情報を使って生成します。これにより、DBへの

そして、$sql という変数に実行したいSQL文をセットします。

その$sqlをクエリとして発行して、結果を $result に格納します

DBエラーの検出


try{
   <ここにDBの処理>
}catch (PDOException $e){
  print('Connection failed:'.$e->getMessage());
  die();
}

tryで囲われた中にDBの処理を書くことで、その中でエラーが発生した場合に検出することが出来ます。エラーが発生した場合catchで囲われた中の処理を実行し、エラーが無かった場合はcatch内の処理をスキップします。

catchの中身は、エラーの内容を画面に出力して、そこでプログラムを終了させる、というものになります

画面への出力


print $result['gamename'];
print "\n";

1つめのprint文では取得したデータのgamename項目を画面に出力します。2つめのprintは改行を出力しています

まとめ

このプログラムでは、ErogameScapeのデータベースにアクセスして、ID:2267のゲーム名を出力しました。

結果が分かっている処理ですので、下記にて書き換えも可能です :-P


<?php

print "”Hello,world.”\n";